:root{--color-primary:#1e6b4f;--color-primary-dark:#123f2f;--color-accent:#145c73;--color-bg:#f6f8f6;--color-surface:#fff;--color-border:#dee5e0;--color-text:#1b2621;--color-muted:#66766d;--color-success-bg:#e4f5ea;--color-success-text:#1e7a46;--color-warning-bg:#fbf0dd;--color-warning-text:#96650a;--color-danger-bg:#fbe7e4;--color-danger-text:#b23a22;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);margin:0}h1{margin:0;font-size:1.5rem}h2{margin:0 0 .75rem;font-size:1.1rem}a{color:var(--color-primary)}.muted{color:var(--color-muted)}.login-screen{background:linear-gradient(135deg, var(--color-primary-dark), var(--color-primary));justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--color-surface);border-radius:12px;flex-direction:column;width:340px;padding:2.5rem;display:flex;box-shadow:0 10px 40px #0003}.login-card h1{text-align:center;color:var(--color-primary-dark)}.login-subtitle{text-align:center;color:var(--color-muted);margin:.25rem 0 1.5rem;font-size:.85rem}.login-card label{margin-top:.75rem;margin-bottom:.25rem;font-size:.85rem;font-weight:600}.login-card input{border:1px solid var(--color-border);border-radius:6px;padding:.55rem .7rem;font-size:.95rem}.password-input-wrap{display:flex;position:relative}.password-input-wrap input{flex:1;padding-right:2.4rem}.login-card .password-toggle-btn{width:1.75rem;height:1.75rem;color:var(--color-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;margin-top:0;padding:0;display:flex;position:absolute;top:50%;right:.5rem;transform:translateY(-50%)}.login-card .password-toggle-btn:hover{color:var(--color-primary);background:#0000000d}.login-card button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-top:1.5rem;padding:.65rem;font-size:.95rem;font-weight:600}.login-card button:hover{background:var(--color-primary-dark)}.login-card button:disabled{opacity:.6;cursor:default}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{background:linear-gradient(90deg, var(--color-primary-dark), var(--color-primary));color:#fff;justify-content:space-between;align-items:center;padding:.75rem 1.25rem;display:flex}.app-header-title{letter-spacing:.02em;align-items:center;gap:.6rem;font-size:1.05rem;font-weight:700;display:flex}.app-header-mark{background:#ffffff26;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.app-header-user{align-items:center;gap:.6rem;font-size:.85rem;display:flex}.app-header-chip{background:#ffffff1f;border-radius:999px;align-items:center;gap:.5rem;padding:.25rem .6rem .25rem .25rem;font-size:.78rem;display:flex}.app-header-avatar{color:#04342c;background:#5dcaa5;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:.68rem;font-weight:700;display:flex}.app-header-user button{color:#fff;cursor:pointer;background:0 0;border:1px solid #fff6;border-radius:6px;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.78rem;display:inline-flex}.app-header-user button:hover{background:#ffffff26}.app-body{flex:1;display:flex}.app-nav{background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;gap:.15rem;width:190px;padding:.85rem;display:flex}.app-nav a{color:var(--color-muted);border-radius:8px;align-items:center;gap:.6rem;padding:.55rem .7rem;font-size:.87rem;text-decoration:none;display:flex}.app-nav a:hover{background:var(--color-bg);color:var(--color-text)}.app-nav a.active{background:var(--color-success-bg);color:var(--color-success-text);font-weight:600}.app-content{flex:1;max-width:1100px;padding:1.75rem 2rem}.page-denied{color:var(--color-danger-text);padding:2rem}.page-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.detail-subtitle{color:var(--color-muted);margin-top:.15rem;margin-bottom:1.5rem}.search-bar{gap:.5rem;margin-bottom:1rem;display:flex}.search-bar input{border:1px solid var(--color-border);border-radius:6px;min-width:260px;padding:.5rem .75rem}.search-bar button{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:6px;padding:.5rem 1rem}.btn{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;border-radius:6px;padding:.5rem 1rem;font-size:.9rem;text-decoration:none;display:inline-block}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-danger{background:var(--color-danger-text);border-color:var(--color-danger-text);color:#fff}.data-table{border-collapse:collapse;background:var(--color-surface);border-radius:8px;width:100%;overflow:hidden;box-shadow:0 1px 3px #0000000f}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--color-border);padding:.6rem .9rem;font-size:.9rem}.data-table th{background:var(--color-bg);color:var(--color-muted);text-transform:uppercase;letter-spacing:.03em;font-size:.78rem;font-weight:600}.data-table tr:last-child td{border-bottom:none}.pagination{color:var(--color-muted);align-items:center;gap:1rem;margin-top:1rem;font-size:.85rem;display:flex}.pagination button{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:6px;padding:.35rem .75rem}.pagination button:disabled{opacity:.4;cursor:default}.badge{background:var(--color-border);color:var(--color-text);border-radius:999px;padding:.15rem .55rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-success{background:var(--color-success-bg);color:var(--color-success-text)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger-text)}.form-page{max-width:560px}.form-card{background:var(--color-surface);border-radius:8px;flex-direction:column;padding:1.5rem;display:flex;box-shadow:0 1px 3px #0000000f}.form-card label{margin-top:.85rem;margin-bottom:.3rem;font-size:.85rem;font-weight:600}.form-card input,.form-card select{border:1px solid var(--color-border);border-radius:6px;padding:.5rem .65rem;font-size:.9rem}.form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.checkbox-label{align-items:center;gap:.5rem;flex-direction:row!important;display:flex!important}.form-error{background:var(--color-danger-bg);color:var(--color-danger-text);border-radius:6px;margin-top:1rem;padding:.6rem .8rem;font-size:.85rem}.form-actions{justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}.detail-grid{background:var(--color-surface);border-radius:8px;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem;padding:1.25rem;display:grid;box-shadow:0 1px 3px #0000000f}.detail-label{color:var(--color-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:.2rem;font-size:.75rem;display:block}.detail-section{margin-bottom:2rem}.permission-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.4rem 1rem;margin-top:.5rem;display:grid}.diff-added{color:var(--color-success-text,#1a7f37)}.diff-removed{color:var(--color-danger-text,#cf222e);text-decoration:line-through}.kpi-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;margin-top:1.5rem;display:grid}.kpi-card{background:var(--color-surface);color:var(--color-text);border-radius:8px;padding:1.25rem;text-decoration:none;transition:transform .1s;box-shadow:0 1px 3px #0000000f}.kpi-card:hover{transform:translateY(-2px);box-shadow:0 4px 10px #0000001a}.kpi-value{color:var(--color-primary-dark);font-size:1.8rem;font-weight:700}.kpi-label{color:var(--color-muted);margin-top:.2rem;font-size:.85rem}.module-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.75rem;display:grid}.module-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;flex-direction:column;min-height:152px;padding:.9rem;display:flex;position:relative}.module-card-soon{opacity:.55}.module-card-ribbon{background:var(--color-border);color:var(--color-muted);border-radius:999px;padding:.12rem .5rem;font-size:.68rem;font-weight:700;position:absolute;top:.6rem;right:.6rem}.module-card-top{align-items:center;gap:.65rem;margin-bottom:.55rem;display:flex}.module-card-icon{color:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.module-card-name{min-width:0}.module-card-code{color:var(--color-text);font-size:1.05rem;font-weight:700;line-height:1.15}.module-card-fullname{color:var(--color-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:.1rem;font-size:.72rem;overflow:hidden}.module-card-desc{color:var(--color-muted);flex:1;margin-bottom:.6rem;font-size:.78rem;line-height:1.45}.module-card-actions{align-items:center;gap:.4rem;display:flex}.module-card-enter{color:#fff;background:var(--color-primary);cursor:pointer;border:none;border-radius:7px;flex:1;padding:.45rem 0;font-size:.82rem;font-weight:600}.module-card-enter:hover{background:var(--color-primary-dark)}.module-card-enter:disabled{opacity:.6;cursor:default}.module-card-link{border:1px solid var(--color-border);width:30px;height:30px;color:var(--color-muted);cursor:pointer;background:0 0;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.module-card-link:hover{background:var(--color-bg);color:var(--color-text)}.profile-header{background:var(--color-surface);border-radius:8px;align-items:center;gap:1.1rem;margin-bottom:1.5rem;padding:1.5rem;display:flex;box-shadow:0 1px 3px #0000000f}.profile-avatar{background:var(--color-primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;font-size:1.4rem;font-weight:700;display:flex}.profile-header-info h1{margin:0 0 .15rem;font-size:1.35rem}.profile-header-meta{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.role-badge-list{flex-wrap:wrap;gap:.4rem;display:flex}.protection-banner{background:var(--color-warning-bg);color:var(--color-warning-text);border-radius:8px;align-items:flex-start;gap:.6rem;margin-bottom:1.5rem;padding:.9rem 1.1rem;font-size:.9rem;line-height:1.5;display:flex}.avatar-sm{background:var(--color-primary);color:#fff;vertical-align:middle;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;margin-right:.5rem;font-size:.85rem;font-weight:700;display:inline-flex}@page{size:A4 portrait;margin:15mm}.printable-a4{color:#000;background:#fff;max-width:210mm;margin:0 auto 2rem;padding:15mm;box-shadow:0 1px 4px #0000001f}.printable-a4 h1,.printable-a4 h2{color:#000}.printable-a4-header{text-align:center;border-bottom:2px solid #000;margin-bottom:1.25rem;padding-bottom:.75rem}.printable-a4-section{margin-bottom:1.5rem}.printable-a4 table{border-collapse:collapse;width:100%;margin-top:.5rem}.printable-a4 th,.printable-a4 td{text-align:left;border:1px solid #333;padding:.4rem .6rem;font-size:.9rem}.printable-a4-signature-row{text-align:center;justify-content:space-between;margin-top:3rem;display:flex}.printable-a4-signature-row>div{width:45%}@media print{.app-header,.app-nav,.no-print{display:none!important}.app-content{margin:0;padding:0}.printable-a4{box-shadow:none;max-width:none;margin:0;padding:0}}
