:root{--navy: #233a8f;--navy-700: #1b2d70;--navy-900: #0f1a47;--lime: #bece1e;--lime-600: #a6b512;--lime-soft: #f4f8d6;--bg: #f3f5fb;--surface: #ffffff;--surface-2: #f6f7fc;--surface-3: #eef1f9;--border: #e3e7f2;--border-strong: #cfd6ea;--text: #141a33;--text-2: #3c4466;--muted: #6e7593;--primary: var(--navy);--primary-soft: #e9edfb;--green: #0c9a68;--red: #dc3545;--amber: #c17a0a;--blue: #2a5bd7;--violet: #7543e3;--radius: 14px;--radius-sm: 10px;--shadow-xs: 0 1px 2px rgba(20, 30, 70, .06);--shadow: 0 1px 2px rgba(20, 30, 70, .05), 0 4px 14px rgba(20, 30, 70, .06);--shadow-lg: 0 12px 40px rgba(20, 30, 70, .14);--ring: 0 0 0 4px rgba(35, 58, 143, .14);--grad-brand: linear-gradient(135deg, #2b47ad 0%, #233a8f 45%, #16245e 100%);--sidebar: 260px;--ease: cubic-bezier(.2, .8, .2, 1);font-family:Plus Jakarta Sans,Inter,Segoe UI,system-ui,-apple-system,Roboto,sans-serif;color:var(--text);background:var(--bg);font-size:14px;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(1200px 500px at 85% -10%,rgba(190,206,30,.1),transparent 60%),radial-gradient(900px 500px at 20% -20%,rgba(35,58,143,.08),transparent 60%),var(--bg);background-attachment:fixed}::selection{background:#bece1e73;color:var(--navy-900)}h1{font-size:26px;margin:0;letter-spacing:-.02em;font-weight:800}h2{font-size:19px;margin:0 0 12px;letter-spacing:-.01em}h3{font-size:15px;margin:0 0 12px;font-weight:700;letter-spacing:-.01em}a{color:var(--navy)}code{background:var(--surface-3);padding:1px 6px;border-radius:6px}.muted{color:var(--muted)}.small,small{font-size:12px}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.right{text-align:right}.pad{padding:12px}.full{width:100%}.spacer{flex:1}.stack-sm>*+*{margin-top:6px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.green{color:var(--green)}.red{color:var(--red)}.amber{color:var(--amber)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cdd3e6;border-radius:10px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background-color:#b5bdd8}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pop{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translate(0) scale(1)}50%{transform:translate(30px,-20px) scale(1.08)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.app{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);position:fixed;inset:0 auto 0 0;z-index:30;display:flex;flex-direction:column;color:#c9d1f0;background:linear-gradient(180deg,#1c2f78,#142259 55%,#0d1740);box-shadow:4px 0 30px #0d17402e;transition:width .25s var(--ease),transform .25s var(--ease);overflow:hidden}.sidebar:after{content:"";position:absolute;width:280px;height:280px;right:-140px;bottom:60px;border-radius:50%;background:radial-gradient(circle,rgba(190,206,30,.22),transparent 70%);pointer-events:none}.brand{display:flex;align-items:center;padding:16px 16px 14px;min-height:84px;position:relative;z-index:1}.brand-logo{height:54px;width:auto;max-width:100%;object-fit:contain;background:#fff;border-radius:14px;padding:6px 12px;box-shadow:0 6px 18px #0000002e}.collapsed .brand-logo{height:40px;padding:4px}.brand strong{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand small{color:var(--muted);font-size:11.5px}.brand-text{min-width:0}.logo{width:34px;height:34px;border-radius:10px;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:800;flex-shrink:0}.sidebar nav{flex:1;overflow-y:auto;padding:6px 12px 14px;position:relative;z-index:1}.sidebar nav::-webkit-scrollbar-thumb{background:#ffffff26}.nav-group+.nav-group{margin-top:16px}.nav-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#c9d1f080;padding:0 12px 7px}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:9px 12px;margin:2px 0;border-radius:11px;color:#c9d1f0;text-decoration:none;font-size:13.5px;font-weight:600;position:relative;white-space:nowrap;transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}.sidebar nav a:hover{background:#ffffff14;color:#fff;transform:translate(2px)}.sidebar nav a.active{background:linear-gradient(135deg,#cfdd2c,var(--lime));color:var(--navy-900);box-shadow:0 6px 18px #bece1e59}.sidebar nav a.active .nav-icon{color:var(--navy-900)}.nav-icon{flex-shrink:0;opacity:.95}.sidebar-foot{padding:12px;border-top:1px solid rgba(255,255,255,.08);position:relative;z-index:1}.user{display:flex;gap:10px;align-items:center;padding:8px;border-radius:12px;background:#ffffff0f;margin-bottom:6px}.user-text{flex:1;min-width:0}.user strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.user small{color:#c9d1f0b3;font-size:11.5px}.user .icon-btn{color:#c9d1f0}.user .icon-btn:hover{background:#ffffff1f;color:#fff}.avatar{width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,var(--lime),#e2ec68);color:var(--navy-900);display:grid;place-items:center;font-weight:800;flex-shrink:0}.collapse-btn{display:flex;align-items:center;gap:12px;width:100%;padding:8px 12px;border:0;background:none;color:#c9d1f0bf;font:inherit;font-size:12.5px;font-weight:600;border-radius:10px;cursor:pointer}.collapse-btn:hover{background:#ffffff14;color:#fff}.collapsed{--sidebar: 76px}.collapsed .brand-text,.collapsed .nav-text,.collapsed .user-text,.collapsed .nav-label,.collapsed .user .icon-btn{display:none}.collapsed .nav-group+.nav-group{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08)}.collapsed .sidebar nav a,.collapsed .collapse-btn{justify-content:center;padding:10px 0}.collapsed .brand,.collapsed .user{justify-content:center;padding-left:0;padding-right:0}.collapsed .user{background:none}.main{flex:1;margin-left:var(--sidebar);min-width:0;transition:margin-left .25s var(--ease)}.topbar{position:sticky;top:0;z-index:20;display:flex;gap:14px;align-items:center;padding:12px 28px;background:#f3f5fbb8;backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);border-bottom:1px solid rgba(227,231,242,.8)}.content{padding:26px 28px 70px;max-width:1560px;animation:fadeUp .35s var(--ease)}.burger,.backdrop{display:none}.global-search{position:relative;flex:1;max-width:600px}.global-search input{width:100%;padding:10px 14px 10px 40px;border-radius:12px;background:var(--surface);box-shadow:var(--shadow-xs)}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.search-results{position:absolute;top:48px;left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);max-height:440px;overflow-y:auto;z-index:50;padding:6px;animation:pop .18s var(--ease)}.search-results button{display:flex;gap:8px;align-items:center;width:100%;text-align:left;border:0;background:none;padding:9px 10px;cursor:pointer;font:inherit;border-radius:9px}.search-results button:hover{background:var(--primary-soft)}.bell{position:relative;margin-left:auto}.bell>.icon-btn{width:42px;height:42px;border-radius:12px;background:var(--surface);box-shadow:var(--shadow-xs);border:1px solid var(--border)}.dot{position:absolute;top:-4px;right:-4px;background:linear-gradient(135deg,#ef4b5b,#c82333);color:#fff;font-size:10.5px;font-weight:700;border-radius:10px;padding:1px 6px;border:2px solid var(--bg)}.dropdown{position:absolute;right:0;top:52px;width:400px;max-width:calc(100vw - 24px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:50;max-height:72vh;overflow-y:auto;padding-bottom:10px;animation:pop .18s var(--ease)}.dropdown-head{padding:14px 16px;font-weight:800;border-bottom:1px solid var(--border)}.notif{display:block;width:100%;text-align:left;border:0;border-left:3px solid transparent;background:none;padding:10px 14px;cursor:pointer;font:inherit;font-size:13px;color:var(--text)}.notif small{display:block;color:var(--muted);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px}.notif:hover{background:var(--surface-2)}.notif-danger{border-left-color:var(--red)}.notif-warning{border-left-color:var(--amber)}.notif-info{border-left-color:var(--blue)}.notif-success{border-left-color:var(--green)}.dropdown .btn.full{margin:10px 14px 0;width:calc(100% - 28px)}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{position:relative;padding-bottom:8px}.page-head h1:after{content:"";position:absolute;left:0;bottom:0;width:44px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--lime),#dbe66a)}.page-head p{margin:8px 0 0;font-size:13.5px}.page-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);animation:fadeUp .35s var(--ease) both}.card+.card,.card+.table-wrap,.table-wrap+.card,.section{margin-top:18px}.card.narrow{max-width:480px}.card-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:8px;flex-wrap:wrap}.card-title h3{margin:0}.section-actions{display:flex;justify-content:flex-end;margin-bottom:10px}.btn svg,.icon-btn svg{flex-shrink:0}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font:inherit;font-weight:600;font-size:13.5px;cursor:pointer;text-decoration:none;white-space:nowrap;box-shadow:var(--shadow-xs);transition:transform .15s var(--ease),box-shadow .15s var(--ease),background .15s,border-color .15s}.btn:hover{background:var(--surface-2);border-color:var(--border-strong);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn:disabled,.btn.disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--grad-brand);border-color:transparent;color:#fff;box-shadow:0 6px 16px #233a8f47}.btn-primary:hover{background:var(--grad-brand);filter:brightness(1.1);border-color:transparent;box-shadow:0 10px 24px #233a8f57}.btn-danger{background:linear-gradient(135deg,#ef4b5b,#c82333);border-color:transparent;color:#fff}.btn-success{background:linear-gradient(135deg,#18b47c,#0c9a68);border-color:transparent;color:#fff;box-shadow:0 4px 12px #0c9a6840}.btn-success:hover{background:linear-gradient(135deg,#18b47c,#0c9a68);filter:brightness(1.06)}.btn-ghost-danger{color:var(--red)}.btn-ghost-danger:hover{background:#fdecee;border-color:#f6c6cc}.btn-sm{padding:6px 11px;font-size:12.5px;border-radius:9px}.btn-xs{padding:4px 9px;font-size:12px;border-radius:8px;box-shadow:none}.btn.full{justify-content:center}.icon-btn{display:inline-grid;place-items:center;background:none;border:0;cursor:pointer;padding:7px;border-radius:10px;position:relative;color:inherit;transition:background .15s}.icon-btn:hover{background:var(--surface-3)}.link{background:none;border:0;color:var(--navy);cursor:pointer;font:inherit;padding:0;font-weight:600}.link:hover{text-decoration:underline}input,select,textarea{font:inherit;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);min-width:0;transition:border-color .15s,box-shadow .15s}input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--navy);box-shadow:var(--ring)}input:disabled,select:disabled,textarea:disabled{background:var(--surface-2);color:var(--muted)}input[type=checkbox]{width:18px;height:18px;accent-color:var(--navy);padding:0}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:4px}.field>span{font-size:12px;font-weight:700;color:var(--text-2);letter-spacing:.01em}.req{color:var(--red);font-style:normal}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}.form-grid .span-2{grid-column:span 2}.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px}.form-grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 18px}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:700;white-space:nowrap;letter-spacing:.01em}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.75}.badge-gray{background:#eef0f6;color:#4b5374}.badge-green{background:#e1f6ec;color:#0a7d55}.badge-red{background:#fde7ea;color:#b51f30}.badge-amber{background:#fdf1dc;color:#976004}.badge-blue{background:#e5edfd;color:#1f4fc4}.badge-violet{background:#efe8fd;color:#6230c9}.alert{padding:12px 14px;border-radius:12px;margin:12px 0;font-size:13.5px;border:1px solid transparent;line-height:1.5}.alert-error{background:#fdecee;color:#a01c2a;border-color:#f8d0d5}.alert-success{background:#e4f6ee;color:#0b6b49;border-color:#c4ebd9}.alert-warning{background:#fdf4e3;color:#855104;border-color:#f6e0b4}.alert-info{background:#ebf0fc;color:#1d3a8a;border-color:#d4def8}.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-bottom:22px}.kpi{--tone: var(--navy);position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px 15px;box-shadow:var(--shadow);animation:pop .4s var(--ease) both;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s}.kpi:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--tone),color-mix(in srgb,var(--tone) 35%,white))}.kpi:after{content:"";position:absolute;right:-30px;top:-30px;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--tone) 14%,transparent),transparent 70%)}.kpi.clickable{cursor:pointer}.kpi.clickable:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--tone) 40%,var(--border))}.kpi-label{color:var(--muted);font-size:12px;font-weight:600;position:relative;z-index:1}.kpi-value{font-size:23px;font-weight:800;margin-top:6px;font-variant-numeric:tabular-nums;letter-spacing:-.02em;position:relative;z-index:1;color:var(--text)}.kpi-hint{font-size:11.5px;color:var(--muted);margin-top:4px;position:relative;z-index:1}.kpi-green{--tone: var(--green)}.kpi-red{--tone: var(--red)}.kpi-amber{--tone: var(--amber)}.kpi-blue{--tone: var(--blue)}.kpi-green .kpi-value{color:var(--green)}.kpi-red .kpi-value{color:var(--red)}.kpi-amber .kpi-value{color:var(--amber)}.kpi-blue .kpi-value{color:var(--navy)}.kpis .kpi:nth-child(2){animation-delay:.03s}.kpis .kpi:nth-child(3){animation-delay:.06s}.kpis .kpi:nth-child(4){animation-delay:.09s}.kpis .kpi:nth-child(5){animation-delay:.12s}.kpis .kpi:nth-child(6){animation-delay:.15s}.kpis .kpi:nth-child(n+7){animation-delay:.18s}.section-title{display:flex;align-items:center;gap:10px;font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--navy);margin:26px 0 12px;font-weight:800}.section-title:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--border-strong),transparent)}.tabs{display:inline-flex;max-width:100%;gap:4px;padding:4px;background:var(--surface-3);border-radius:12px;margin-bottom:18px;overflow-x:auto;border:1px solid var(--border)}.tabs button{background:none;border:0;padding:8px 14px;border-radius:9px;cursor:pointer;font:inherit;font-weight:600;font-size:13px;color:var(--muted);white-space:nowrap;transition:background .15s,color .15s,box-shadow .15s}.tabs button:hover{color:var(--text)}.tabs button.active{background:var(--surface);color:var(--navy);box-shadow:var(--shadow)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;animation:fadeUp .35s var(--ease) both}.table-toolbar{display:flex;gap:8px;padding:12px;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#fff,var(--surface-2))}.table-toolbar .search{min-width:240px;border-radius:10px}.table-scroll{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding:11px 14px;background:var(--surface-2);border-bottom:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.table th:hover{color:var(--navy)}.table td{padding:12px 14px;border-bottom:1px solid #eef0f7;vertical-align:middle}.table tbody tr{transition:background .12s}.table tr.clickable{cursor:pointer}.table tbody tr:hover{background:#f7f9ff}.table tbody tr.clickable:hover td:first-child{box-shadow:inset 3px 0 0 var(--lime)}.table tfoot td{font-weight:800;background:var(--surface-2)}.table th.right,.table td.right{text-align:right}.row-actions{display:flex;gap:4px;justify-content:flex-end;flex-wrap:wrap}.pagination{display:flex;justify-content:space-between;align-items:center;padding:12px;gap:8px;font-size:13px;color:var(--muted);border-top:1px solid var(--border)}.empty{text-align:center;color:var(--muted);padding:40px 20px;font-weight:500}.loading{display:flex;gap:10px;align-items:center;color:var(--muted);padding:40px;justify-content:center}.spinner{width:20px;height:20px;border:2.5px solid var(--border);border-top-color:var(--navy);border-right-color:var(--lime);border-radius:50%;animation:spin .7s linear infinite}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d174073;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;z-index:100;padding:16px;animation:fadeUp .15s ease}.modal{background:var(--surface);border-radius:18px;width:100%;max-height:calc(100vh - 32px);display:flex;flex-direction:column;box-shadow:0 30px 80px #0d174059;animation:pop .22s var(--ease);overflow:hidden}.modal-sm{max-width:460px}.modal-md{max-width:660px}.modal-lg{max-width:880px}.modal-xl{max-width:1120px}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#fff,var(--surface-2));position:relative}.modal-head:before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,var(--navy),var(--lime))}.modal-head h3{margin:0;font-size:16px}.modal-body{padding:20px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border);background:var(--surface-2)}.modal-foot.inline{padding:16px 0 0;margin-top:16px;background:none}.toasts{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:10px;z-index:200}.toast{padding:12px 18px;border-radius:12px;color:#fff;box-shadow:var(--shadow-lg);max-width:400px;font-weight:600;animation:pop .25s var(--ease)}.toast-success{background:linear-gradient(135deg,#18b47c,#0c9a68)}.toast-error{background:linear-gradient(135deg,#ef4b5b,#c82333)}.toast-info{background:var(--grad-brand)}.files{list-style:none;padding:0;margin:0}.files li{padding:4px 0}.files a{display:inline-flex;align-items:center;gap:6px;font-weight:600}.table th svg{vertical-align:-2px;margin-left:3px}.lines-table input,.lines-table select{width:100%;padding:7px 8px}.lines-table td{padding:7px;vertical-align:top}.lines-table .col-designation{min-width:230px}.lines-table .col-num{width:110px}.lines-table .col-small{width:84px}.totals-box{margin-left:auto;width:100%;max-width:400px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 16px}.totals-box div{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px dashed var(--border-strong)}.totals-box div:last-child{border-bottom:0}.totals-box .grand{margin:6px -16px;padding:12px 16px;font-size:17px;font-weight:800;border:0;color:#fff;background:var(--grad-brand)}.totals-box .grand:last-child{margin-bottom:-10px;border-radius:0 0 var(--radius) var(--radius)}.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:14px;overflow-x:auto;padding-bottom:10px}.kanban-col{background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius);padding:12px;min-height:220px}.kanban-col h4{margin:0 0 10px;font-size:12.5px;display:flex;justify-content:space-between;gap:6px;color:var(--navy)}.kanban-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:10px;box-shadow:var(--shadow-xs);cursor:pointer;font-size:13px;transition:transform .15s var(--ease),box-shadow .15s}.kanban-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.kanban-card strong{display:block}.progress{height:8px;background:var(--surface-3);border-radius:6px;overflow:hidden}.progress>div{height:100%;background:linear-gradient(90deg,var(--navy),var(--lime));border-radius:6px}.timeline{list-style:none;padding:0;margin:0}.timeline li{padding:9px 0 9px 18px;border-left:2px solid var(--border);position:relative;font-size:13px}.timeline li:before{content:"";position:absolute;left:-6px;top:14px;width:10px;height:10px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 3px #fff,0 0 0 4px var(--border-strong)}.period-filter{display:flex;gap:6px;flex-wrap:wrap}.filters-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:18px}.chart-box{height:290px}dl.props{display:grid;grid-template-columns:180px 1fr;gap:8px 14px;margin:0}dl.props dt{color:var(--muted);font-weight:600;font-size:13px}dl.props dd{margin:0}.hero{position:relative;overflow:hidden;border-radius:20px;padding:26px 28px;margin-bottom:22px;color:#fff;background:var(--grad-brand);box-shadow:0 18px 40px #233a8f47;animation:pop .4s var(--ease)}.hero:before,.hero:after{content:"";position:absolute;border-radius:50%;pointer-events:none}.hero:before{width:340px;height:340px;right:-80px;top:-160px;background:radial-gradient(circle,rgba(190,206,30,.55),transparent 65%);animation:float 12s ease-in-out infinite}.hero:after{width:260px;height:260px;left:35%;bottom:-170px;background:radial-gradient(circle,rgba(120,150,255,.35),transparent 65%);animation:float 16s ease-in-out infinite reverse}.hero>*{position:relative;z-index:1}.hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.hero h1{font-size:28px;color:#fff}.hero p{margin:6px 0 0;color:#ffffffc7;font-size:14px}.hero-date{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff1f;border:1px solid rgba(255,255,255,.2);font-size:12.5px;font-weight:600;text-transform:capitalize}.hero-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.hero-actions .btn{background:#ffffff1f;color:#fff;border-color:#ffffff38;box-shadow:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.hero-actions .btn:hover{background:#fff3}.hero-actions .btn-lime{background:linear-gradient(135deg,#d6e33a,var(--lime));color:var(--navy-900);border-color:transparent;box-shadow:0 8px 20px #bece1e59}.hero-actions .btn-lime:hover{background:linear-gradient(135deg,#d6e33a,var(--lime));filter:brightness(1.05)}.hero-stats{display:flex;gap:28px;flex-wrap:wrap;margin-top:20px}.hero-stat small{display:block;color:#ffffffa6;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.hero-stat strong{font-size:22px;font-weight:800;letter-spacing:-.02em}.hero-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.hero-filters select,.hero-filters input{background:#fffffff2;border-color:transparent}.center-screen{min-height:100vh;display:grid;place-items:center;padding:16px}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:var(--bg)}.login-side{position:relative;overflow:hidden;color:#fff;padding:64px;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(150deg,#2a46ab,#1c2f78 45%,#0d1740)}.login-side:before,.login-side:after{content:"";position:absolute;border-radius:50%;filter:blur(10px);pointer-events:none}.login-side:before{width:480px;height:480px;right:-160px;top:-140px;background:radial-gradient(circle,rgba(190,206,30,.55),transparent 65%);animation:float 14s ease-in-out infinite}.login-side:after{width:420px;height:420px;left:-140px;bottom:-160px;background:radial-gradient(circle,rgba(110,140,255,.45),transparent 65%);animation:float 18s ease-in-out infinite reverse}.login-side>*{position:relative;z-index:1}.login-logo{background:#fff;border-radius:20px;padding:16px 22px;display:inline-block;align-self:flex-start;box-shadow:0 18px 40px #00000040}.login-logo img{height:88px;display:block}.login-side h1{font-size:44px;line-height:1.08;margin:30px 0 14px;letter-spacing:-.03em}.login-side h1 span{color:var(--lime)}.login-side p{color:#ffffffc7;max-width:470px;line-height:1.7;font-size:15px}.login-features{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:10px;margin-top:26px}.login-features div{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#ffffff14;border:1px solid rgba(255,255,255,.12);font-size:13px;font-weight:600;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.login-features svg{color:var(--lime);flex-shrink:0}.login-card{align-self:center;justify-self:center;width:calc(100% - 32px);max-width:420px;display:flex;flex-direction:column;gap:12px;padding:32px;border-radius:22px;box-shadow:var(--shadow-lg)}.login-card h2{font-size:24px;margin-bottom:2px}.login-card .btn-primary{padding:12px;font-size:14.5px;margin-top:4px}.login-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}.todo-add{display:flex;gap:8px;flex-wrap:wrap;align-items:center;border-top:3px solid var(--lime)}.todo-add .todo-title{flex:1 1 280px;font-size:15px;padding:11px 14px}.todo-item{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid #eef0f7;transition:background .12s}.todo-item:last-child{border-bottom:0}.todo-item:hover{background:#f7f9ff}.todo-item input[type=checkbox]{width:20px;height:20px;accent-color:var(--green)}.todo-body{flex:1;min-width:0}.todo-text{font-weight:600}.todo-item.done .todo-text{text-decoration:line-through;color:var(--muted)}.todo-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin-top:4px}.todo-meta span{display:inline-flex;align-items:center;gap:4px}.todo-meta .red{color:var(--red);font-weight:600}.todo-meta .amber{color:var(--amber);font-weight:600}.module-toggle{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);font-weight:600}@media (max-width: 1100px){.grid-3,.form-grid-4,.login-page{grid-template-columns:1fr 1fr}.login-side{padding:44px}}@media (max-width: 860px){.sidebar{transform:translate(-100%)}.menu-open .sidebar{transform:none}.menu-open .backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0d174073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:25}.main{margin-left:0}.collapsed{--sidebar: 260px}.collapsed .brand-text,.collapsed .nav-text,.collapsed .user-text,.collapsed .nav-label{display:block}.collapse-btn{display:none}.burger{display:grid}.topbar{padding:10px 12px}.content{padding:18px 14px 60px}h1{font-size:22px}.grid-2,.grid-3,.form-grid,.form-grid-3,.form-grid-4{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}.login-page{grid-template-columns:1fr}.login-side{padding:32px 22px}.login-side h1{font-size:30px;margin-top:20px}.login-features{grid-template-columns:1fr 1fr}.login-card{margin:-28px auto 28px;position:relative;z-index:2}.hero{padding:20px}.hero h1{font-size:22px}dl.props{grid-template-columns:1fr}.tabs{display:flex}.table:not(.lines-table) thead{display:none}.table:not(.lines-table) tr{display:block;border-bottom:1px solid var(--border);padding:8px 0}.table:not(.lines-table) td{display:flex;justify-content:space-between;gap:10px;border:0;padding:4px 14px;text-align:right}.table:not(.lines-table) td:before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:600;text-align:left}.table:not(.lines-table) td[data-label=""]:before{content:none}}@media print{.sidebar,.topbar,.page-actions,.table-toolbar,.row-actions{display:none!important}.main{margin:0}body{background:#fff}}.panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-bottom:18px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px 10px;animation:fadeUp .35s var(--ease) both}.panel-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.panel-head h3{margin:0;flex:1}.panel-head .link{display:inline-flex;align-items:center;gap:3px}.panel-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--primary-soft);color:var(--navy)}.panel-row{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:10px 2px;border:0;border-top:1px solid #eef0f7;background:none;font:inherit;color:var(--text-2);text-align:left}.panel-row strong{color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}.panel-row.clickable{cursor:pointer;border-radius:8px;transition:background .12s}.panel-row.clickable:hover{background:var(--surface-2)}.panel-row:disabled{cursor:default;color:var(--text-2)}.grid-2>.card,.grid-3>.card,.panels>.panel{margin-top:0}.todo-stats{display:flex;gap:8px;flex-wrap:wrap}.todo-stats span{padding:6px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--border);font-size:12.5px;color:var(--muted);box-shadow:var(--shadow-xs)}.todo-stats strong{color:var(--navy);margin-right:2px}.todo-stats .late{background:#fdecee;border-color:#f8d0d5;color:#a01c2a}.todo-stats .late strong{color:var(--red)}.board-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:4px}.board-toolbar .tabs{margin-bottom:14px}.board-filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.board-search{display:flex;align-items:center;gap:6px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--muted);box-shadow:var(--shadow-xs)}.board-search input{border:0;box-shadow:none!important;padding:8px 0;min-width:200px;background:none}.avatar-filter{display:flex;gap:4px;padding:3px;border-radius:999px;background:var(--surface-3);border:1px solid var(--border)}.avatar-filter button{min-width:32px;height:30px;padding:0 9px;border-radius:999px;border:0;background:none;font:inherit;font-size:11.5px;font-weight:800;color:var(--muted);cursor:pointer}.avatar-filter button.on{background:var(--navy);color:#fff;box-shadow:var(--shadow)}.board{display:grid;grid-template-columns:repeat(4,minmax(260px,1fr));gap:16px;align-items:start;overflow-x:auto;padding-bottom:12px}.board-col{--col: #8a93b0;background:#eef1f9bf;border:1px solid var(--border);border-radius:16px;padding:12px;min-height:320px;display:flex;flex-direction:column;transition:background .15s,border-color .15s,box-shadow .15s}.board-col.col-blue{--col: var(--blue)}.board-col.col-amber{--col: var(--amber)}.board-col.col-green{--col: var(--green)}.board-col.drop{background:color-mix(in srgb,var(--col) 9%,white);border-color:color-mix(in srgb,var(--col) 55%,white);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--col) 30%,transparent)}.board-col-head{display:flex;align-items:center;gap:8px;padding:2px 4px 10px;border-bottom:3px solid var(--col);margin-bottom:12px}.board-col-head h3{margin:0;font-size:14px;flex:1}.col-dot{width:9px;height:9px;border-radius:50%;background:var(--col);box-shadow:0 0 0 3px color-mix(in srgb,var(--col) 22%,transparent)}.col-count{min-width:24px;padding:1px 8px;border-radius:999px;background:var(--surface);border:1px solid var(--border);font-size:12px;font-weight:800;color:var(--text-2);text-align:center}.board-col-head .icon-btn{color:var(--muted)}.board-col-head .icon-btn:hover{color:var(--navy);background:var(--surface)}.board-cards{display:flex;flex-direction:column;gap:10px;flex:1}.board-empty{border:2px dashed var(--border-strong);border-radius:12px;padding:18px 10px;text-align:center;color:var(--muted);font-size:12.5px}.task-card{--prio: #9aa3c0;position:relative;background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:12px 13px 11px 15px;box-shadow:var(--shadow-xs);cursor:grab;animation:pop .25s var(--ease) both;transition:transform .15s var(--ease),box-shadow .15s,opacity .15s}.task-card:before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:4px;border-radius:0 4px 4px 0;background:var(--prio)}.task-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.task-card:active{cursor:grabbing}.task-card.dragging{opacity:.45;transform:rotate(2deg)}.task-card.done .task-title{text-decoration:line-through;color:var(--muted)}.task-card.prio-urgente{--prio: var(--red)}.task-card.prio-haute{--prio: var(--amber)}.task-card.prio-normale{--prio: var(--blue)}.task-card.prio-basse{--prio: #9aa3c0}.task-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.grip{color:#b7bed6}.prio-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--prio);background:color-mix(in srgb,var(--prio) 12%,white)}.prio-chip.prio-urgente{--prio: var(--red)}.prio-chip.prio-haute{--prio: var(--amber)}.prio-chip.prio-normale{--prio: var(--blue)}.prio-chip.prio-basse{--prio: #7d86a6}.task-title{margin:0;font-weight:700;font-size:13.8px;line-height:1.4;color:var(--text);word-break:break-word}.task-desc{margin:5px 0 0;font-size:12.5px;color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.task-foot{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);font-size:11.5px;font-weight:600;color:var(--text-2)}.chip.due-late{background:#fdecee;border-color:#f8d0d5;color:#b51f30}.chip.due-today{background:#fdf1dc;border-color:#f6e0b4;color:#976004}.chip.due-soon{background:#ebf0fc;border-color:#d4def8;color:#1d3a8a}.task-avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:10.5px;font-weight:800;color:#fff;background:var(--grad-brand);box-shadow:0 0 0 2px #fff,0 2px 6px #233a8f4d}.quick-add{background:var(--surface);border:1px solid var(--border-strong);border-radius:13px;padding:10px;margin-bottom:10px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;animation:pop .2s var(--ease)}.quick-add textarea{resize:none;border:0;padding:4px;font-weight:600;box-shadow:none!important}.quick-add-row{display:flex;gap:6px;align-items:center}.quick-add-row select,.quick-add-row input{flex:1;padding:6px 8px;font-size:12.5px}.floating-delete{position:fixed;left:50%;bottom:22px;transform:translate(-50%);z-index:150;background:#fff;box-shadow:var(--shadow-lg)}.floating-delete:hover{transform:translate(-50%) translateY(-1px)}@media (max-width: 1100px){.board{grid-template-columns:repeat(4,280px)}}.person-filter{display:flex;align-items:center;gap:6px;padding:0 4px 0 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--muted);box-shadow:var(--shadow-xs)}.person-filter select{border:0;box-shadow:none!important;padding:8px 6px;background:none;font-weight:600}.member-strip{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 12px}.member{display:flex;align-items:center;gap:8px;padding:6px 10px 6px 6px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font:inherit;font-size:13px;font-weight:600;color:var(--text-2);cursor:pointer;white-space:nowrap;box-shadow:var(--shadow-xs);transition:border-color .15s,background .15s,transform .15s}.member:hover{transform:translateY(-1px);border-color:var(--border-strong)}.member.on{background:var(--primary-soft);border-color:var(--navy);color:var(--navy)}.task-people{display:flex;align-items:center;gap:6px;margin-top:10px;padding-top:9px;border-top:1px dashed var(--border)}.task-people .person{display:flex;align-items:center;gap:6px;min-width:0;flex:1;padding:2px;border:0;background:none;font:inherit;font-size:12px;font-weight:700;color:var(--text-2);text-align:left;cursor:pointer;border-radius:8px}.task-people .person:hover{background:var(--surface-2)}.task-people .person>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-people .person small{display:block;font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;line-height:1.1}.task-people .person.self{cursor:default}.people-arrow{color:var(--muted);flex-shrink:0}.task-avatar.small{width:24px;height:24px;font-size:9.5px;flex-shrink:0}.task-avatar.alt{background:linear-gradient(135deg,#d6e33a,var(--lime));color:var(--navy-900)}.col-jump,.move-select{display:none}@media (hover: none){.move-select{display:block;width:auto;padding:3px 6px;font-size:11.5px;font-weight:700;border-radius:8px;background:var(--surface-2)}.grip{display:none}}@media (max-width: 1100px){.board{grid-template-columns:repeat(2,minmax(0,1fr));overflow-x:visible}}@media (max-width: 860px){.page-head .todo-stats{width:100%}.board-toolbar{flex-direction:column;align-items:stretch;gap:0}.board-toolbar .tabs{width:100%}.board-toolbar .tabs button{flex:1;padding:8px 6px}.board-filters{width:100%}.person-filter,.board-search{flex:1 1 100%}.person-filter select{width:100%}.board-search input{min-width:0;width:100%}.board-filters .btn{flex:1 1 auto;justify-content:center}.member-strip{margin:0 -14px;padding:2px 14px 12px}.col-jump{display:flex;gap:6px;overflow-x:auto;margin:0 -14px 10px;padding:2px 14px;scrollbar-width:none}.col-jump::-webkit-scrollbar{display:none}.col-jump button{--col: #8a93b0;display:flex;align-items:center;gap:6px;flex-shrink:0;padding:7px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font:inherit;font-size:12.5px;font-weight:700;color:var(--text-2);box-shadow:var(--shadow-xs)}.col-jump button.col-blue{--col: var(--blue)}.col-jump button.col-amber{--col: var(--amber)}.col-jump button.col-green{--col: var(--green)}.board{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -14px;padding:0 14px 14px;scroll-padding:0 14px}.board-col{flex:0 0 86%;max-width:380px;scroll-snap-align:start;min-height:55vh}.quick-add-row{flex-wrap:wrap}.quick-add-row select,.quick-add-row input{flex:1 1 45%}.task-card{cursor:pointer}.task-card:hover{transform:none}.move-select{display:block;width:auto;padding:3px 6px;font-size:11.5px;font-weight:700;border-radius:8px;background:var(--surface-2)}.grip{display:none}.floating-delete{bottom:14px}}.check-group{display:flex;flex-wrap:wrap;gap:6px}.check-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:12.5px;font-weight:600;color:var(--text-2);cursor:pointer;transition:background .12s,border-color .12s}.check-pill input{width:15px;height:15px}.check-pill.on{background:var(--primary-soft);border-color:var(--navy);color:var(--navy)}input[type=color]{width:64px;height:38px;padding:3px;cursor:pointer}.programs-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:18px;align-items:start}.program-files{position:sticky;top:84px;display:flex;flex-direction:column;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px;box-shadow:var(--shadow);max-height:calc(100vh - 110px);overflow-y:auto}.program-files .board-search{margin-bottom:6px;box-shadow:none}.program-files .board-search input{min-width:0;width:100%}.program-file{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;border:0;border-radius:10px;background:none;font:inherit;font-size:13.5px;font-weight:600;color:var(--text-2);text-align:left;cursor:pointer;transition:background .12s}.program-file:hover{background:var(--surface-2)}.program-file.on{background:var(--primary-soft);color:var(--navy)}.file-dot{width:11px;height:11px;border-radius:4px;flex-shrink:0}.file-dot.all{background:conic-gradient(var(--navy),var(--lime),#e8590c,#d6336c,var(--navy))}.file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.program-main{min-width:0}.program-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:16px;overflow:hidden}.program-card:before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--pc)}.program-card-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start}.program-card-head h2{margin:0 0 6px;font-size:21px}.plat{padding:2px 8px;border-radius:999px;background:var(--surface-3);font-weight:600;color:var(--text-2)}.program-card-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:12px}.program-card-body:empty{display:none}.program-card-body small{display:flex;align-items:center;gap:4px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.program-card-body p{margin:4px 0 0;font-size:13px;color:var(--text-2);white-space:pre-line;line-height:1.5}.file-link{display:inline-block;margin-right:10px;font-weight:600}.cal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.cal-nav{display:flex;align-items:center;gap:4px}.cal-nav h3{margin:0 6px;font-size:19px;min-width:150px;text-align:center}.cal-nav .icon-btn{background:var(--surface);border:1px solid var(--border)}.cal-progress{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px}.cal-progress strong{font-size:16px;color:var(--navy)}.cal-progress .progress{width:120px}.cal-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.seg{display:inline-flex;padding:3px;background:var(--surface-3);border:1px solid var(--border);border-radius:10px}.seg button{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border:0;border-radius:8px;background:none;font:inherit;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer}.seg button.on{background:var(--surface);color:var(--navy);box-shadow:var(--shadow-xs)}.status-legend{display:flex;gap:4px;flex-wrap:wrap}.status-legend button{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 2px;border:1px solid transparent;border-radius:999px;background:none;font:inherit;font-size:12px;font-weight:700;color:var(--muted);cursor:pointer}.status-legend button.on{border-color:var(--border-strong);background:var(--surface)}.cal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.cal-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--surface-2);border-bottom:1px solid var(--border)}.cal-head div{padding:9px 10px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-week+.cal-week{border-top:1px solid var(--border)}.cal-day{min-height:132px;padding:6px;border-left:1px solid #eef0f7;display:flex;flex-direction:column;min-width:0;transition:background .12s}.cal-day:first-child{border-left:0}.cal-day.out{background:#fafbfe}.cal-day.out .cal-num{color:#b9bfd3}.cal-day.drop{background:#eef3ff;box-shadow:inset 0 0 0 2px #233a8f59}.cal-day-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.cal-num{font-size:12.5px;font-weight:700;color:var(--text-2);width:26px;height:26px;display:grid;place-items:center;border-radius:50%}.cal-day.today .cal-num{background:var(--navy);color:#fff;box-shadow:0 0 0 3px #bece1e99}.cal-add{opacity:0;width:24px;height:24px;display:grid;place-items:center;border:0;border-radius:7px;background:var(--surface-3);color:var(--navy);cursor:pointer;transition:opacity .12s}.cal-day:hover .cal-add,.cal-add.visible{opacity:1}@media (hover: none){.cal-add{opacity:1}}.cal-items{display:flex;flex-direction:column;gap:4px;overflow-y:auto;max-height:220px}.cal-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:5px 7px 5px 9px;border:1px solid color-mix(in srgb,var(--ic) 25%,white);border-left:3px solid var(--ic);border-radius:8px;background:color-mix(in srgb,var(--ic) 7%,white);font:inherit;cursor:grab;transition:transform .12s,box-shadow .12s}.cal-item:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.cal-item.dragging{opacity:.4}.cal-item.st-publie{opacity:.72}.ci-top{display:flex;gap:5px;align-items:center;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.ci-time{color:var(--text-2)}.ci-type{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ci-title{font-size:12px;font-weight:700;color:var(--text);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ci-foot{display:flex;gap:3px;align-items:center;flex-wrap:wrap}.ci-client{font-size:10.5px;font-weight:700;color:var(--ic);margin-right:2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}.ci-plat{font-size:9px;font-weight:800;padding:0 4px;border-radius:4px;background:#ffffffe6;border:1px solid var(--border);color:var(--text-2)}.ci-status{width:8px;height:8px;border-radius:50%;margin-left:auto;background:#9aa3c0}.ci-status.tone-blue{background:var(--blue)}.ci-status.tone-amber{background:var(--amber)}.ci-status.tone-violet{background:var(--violet)}.ci-status.tone-green{background:var(--green)}.agenda{display:flex;flex-direction:column;gap:14px}.agenda-day{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.agenda-day.today{border-color:var(--navy)}.agenda-date{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--surface-2);border-bottom:1px solid var(--border);text-transform:capitalize}.agenda-item{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-left:4px solid var(--ic);border-bottom:1px solid #eef0f7;cursor:pointer;transition:background .12s}.agenda-item:last-child{border-bottom:0}.agenda-item:hover{background:#f7f9ff}.agenda-time{display:flex;align-items:center;gap:4px;min-width:58px;font-size:12.5px;font-weight:700;color:var(--text-2);padding-top:2px}.agenda-body{flex:1;min-width:0}.agenda-title{font-weight:700}.agenda-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--muted);margin-top:3px}.agenda-caption{margin:6px 0 0;font-size:12.5px;color:var(--text-2);white-space:pre-line;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}@media (max-width: 1100px){.programs-layout{grid-template-columns:1fr}.program-files{position:static;max-height:none;flex-direction:row;overflow-x:auto;padding:8px}.program-files .board-search{min-width:200px;margin:0}.program-file{width:auto;flex-shrink:0}.program-files .muted.small{white-space:nowrap}}@media (max-width: 860px){.cal-toolbar{flex-direction:column;align-items:stretch}.cal-nav{justify-content:space-between}.cal-nav h3{min-width:0;flex:1;font-size:17px}.cal-actions{justify-content:space-between}.cal{overflow-x:auto}.cal-head,.cal-week{min-width:720px}.cal-day{min-height:104px}.agenda-item{flex-wrap:wrap;row-gap:6px}.agenda-time{order:0;flex:1}.agenda-item .badge{order:1}.agenda-item .row-actions{order:2}.agenda-body{order:3;flex:1 1 100%}}.share-empty{text-align:center;padding:10px 6px 4px}.share-empty h3{margin:12px 0 6px;font-size:17px}.share-empty p{max-width:460px;margin:0 auto 16px;line-height:1.6}.share-icon{display:inline-grid;place-items:center;width:58px;height:58px;border-radius:18px;background:var(--grad-brand);color:#fff;box-shadow:0 10px 24px #233a8f4d}.share-link{display:flex;gap:8px}.share-link input{flex:1;font-family:ui-monospace,Consolas,monospace;font-size:12.5px;background:var(--surface-2)}.btn-shared{background:var(--lime-soft);border-color:#dfe8a0;color:#5b6a00}.shared-mark{color:var(--green);flex-shrink:0}.ci-feedback{display:inline-flex;align-items:center;gap:2px;padding:0 5px;border-radius:6px;background:#fdf1dc;color:#976004;font-size:9.5px;font-weight:800}.feedback-panel{background:var(--surface);border:1px solid #f6e0b4;border-left:4px solid var(--amber);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px;margin-bottom:16px}.feedback-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;color:var(--amber)}.feedback-head strong{color:var(--text)}.feedback-row{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid #eef0f7}.feedback-row:first-of-type{border-top:0}.fb-icon{padding-top:1px}.fb-valide .fb-icon{color:var(--green)}.fb-modification .fb-icon{color:var(--amber)}.fb-body{flex:1;min-width:0;font-size:13px}.fb-body p{margin:4px 0;font-style:italic;color:var(--text-2);white-space:pre-line}.public-page{min-height:100vh}.public-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:22px max(16px,calc((100vw - 1240px)/2));color:#fff;background:var(--grad-brand);position:relative;overflow:hidden}.public-head:after{content:"";position:absolute;right:-80px;top:-120px;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(190,206,30,.5),transparent 65%);pointer-events:none}.public-head>*{position:relative;z-index:1}.public-logo{height:58px;background:#fff;border-radius:14px;padding:6px 12px;box-shadow:0 8px 20px #0003}.public-title{flex:1;min-width:200px}.public-title small{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:700;color:var(--lime)}.public-title h1{color:#fff;font-size:28px}.public-title .muted{color:#ffffffbf}.public-contact{display:flex;flex-direction:column;gap:4px}.public-contact a{display:inline-flex;align-items:center;gap:6px;color:#fff;text-decoration:none;font-size:13px;font-weight:600;opacity:.9}.public-main{max-width:1240px;margin:0 auto;padding:22px 16px 50px;animation:fadeUp .35s var(--ease)}.public-foot{text-align:center;margin-top:24px}.public-closed{text-align:center;color:var(--muted)}.public-closed h2{color:var(--text);margin-top:10px}.public-detail{display:flex;flex-direction:column;gap:12px}.public-caption{padding:14px 16px;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;white-space:pre-line;line-height:1.6;font-size:14px}.public-files{display:flex;flex-wrap:wrap;gap:10px}.public-visual{display:block;width:160px;height:160px;border-radius:12px;overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow-xs)}.public-visual img{width:100%;height:100%;object-fit:cover;display:block}@media (max-width: 860px){.public-head{padding:18px 16px}.public-logo{height:44px}.public-title h1{font-size:22px}.public-main{padding:16px 14px 40px}.public-visual{width:calc(50% - 5px);height:auto;aspect-ratio:1}}.versions-list{display:flex;flex-direction:column;gap:6px;padding:10px 12px;margin-bottom:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;font-size:13px}.versions-list .row{justify-content:space-between}
