:root{--brand:#0E5A5E;--brand-deep:#0A4448;--brand-soft:#E2F0EF;--accent:#17A99F;--ink:#17262B;--slate:#57696F;--slate-light:#8CA0A4;--cloud:#EEF3F3;--surface:#FFFFFF;--line:#E1E9E9;--success:#0F8A5F;--success-soft:#E2F2EB;--radius:14px;--shadow:0 1px 2px rgba(23,38,43,.04), 0 8px 24px rgba(23,38,43,.06);--sans:"Inter",system-ui,-apple-system,sans-serif;--display:"Manrope","Inter",system-ui,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--sans);background:var(--cloud);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:none;background:none}a{color:inherit}.boot{height:100%;display:grid;place-items:center;color:var(--slate);font-family:var(--display);font-weight:600}header{background:var(--surface);border-bottom:1px solid var(--line);padding:0 clamp(16px,4vw,40px);height:70px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:40}.brand{display:flex;align-items:center;gap:16px}.logo{height:34px;width:auto;display:block}.logo-fallback{font-family:var(--display);font-weight:800;font-size:19px;color:var(--brand);letter-spacing:-.01em}.divider{width:1px;height:26px;background:var(--line)}.brand .sub{font-size:13.5px;color:var(--slate);font-weight:500}.header-right{display:flex;align-items:center;gap:18px}.secure-badge{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--success);font-weight:600;background:var(--success-soft);padding:6px 11px;border-radius:999px}.secure-badge svg{width:14px;height:14px}.user-chip{display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:13.5px}.user-meta{display:none;flex-direction:column;line-height:1.15;text-align:right}.user-meta .name{font-size:13.5px;font-weight:600}.user-meta .role{font-size:11.5px;color:var(--slate)}@media (min-width:760px){.user-meta{display:flex}}.signout{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);color:var(--slate);display:grid;place-items:center;transition:.12s}.signout:hover{background:var(--cloud);color:var(--ink)}.signout svg{width:17px;height:17px}.wrap{max-width:1240px;margin:0 auto;padding:clamp(18px,3vw,32px) clamp(16px,4vw,40px) 64px}.page-head{margin-bottom:22px}.page-head h1{font-family:var(--display);font-weight:700;font-size:clamp(22px,3vw,28px);letter-spacing:-.02em}.page-head p{color:var(--slate);font-size:14.5px;margin-top:4px;max-width:62ch}.grid{display:grid;gap:22px;grid-template-columns:1fr}@media (min-width:940px){.grid{grid-template-columns:340px 1fr;align-items:start}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.diary{position:sticky;top:92px}@media (max-width:939px){.diary{position:static}}.cal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}.cal-title{font-family:var(--display);font-weight:700;font-size:16px}.cal-nav{display:flex;gap:6px}.cal-nav button{width:32px;height:32px;border-radius:8px;border:1px solid var(--line);color:var(--slate);display:grid;place-items:center;transition:.15s}.cal-nav button:hover{background:var(--cloud);color:var(--ink)}.cal-nav svg{width:18px;height:18px}.cal-grid{padding:14px 14px 8px;display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.dow{text-align:center;font-size:11px;font-weight:600;color:var(--slate-light);padding:6px 0}.day{aspect-ratio:1;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:13.5px;color:var(--ink);position:relative;border:1px solid transparent;transition:.12s}.day.blank{visibility:hidden}.day.today{border-color:var(--accent)}.day.has-event{cursor:pointer;font-weight:600}.day.has-event:hover{background:var(--brand-soft)}.day .dot{width:5px;height:5px;border-radius:50%;background:var(--accent);margin-top:3px}.day.selected{background:var(--brand);color:#fff}.day.selected .dot{background:#fff}.day.no-event{color:var(--slate-light);cursor:default}.agenda{border-top:1px solid var(--line);padding:12px}.agenda-label{font-size:11.5px;font-weight:600;color:var(--slate);padding:4px 8px 8px}.agenda-item{width:100%;text-align:left;display:flex;gap:12px;align-items:center;padding:10px 8px;border-radius:10px;transition:.12s}.agenda-item:hover{background:var(--cloud)}.agenda-item.active{background:var(--brand-soft)}.agenda-date{flex:none;width:44px;text-align:center}.agenda-date .d{font-family:var(--display);font-weight:700;font-size:18px;line-height:1}.agenda-date .m{font-size:10.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.05em}.agenda-info .t{font-size:13.5px;font-weight:600;line-height:1.25}.agenda-info .s{font-size:12px;color:var(--slate)}.agenda-empty{padding:16px 8px;color:var(--slate);font-size:13px}.detail{padding:clamp(18px,2.5vw,28px)}.detail-top{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:flex-start;padding-bottom:18px;border-bottom:1px solid var(--line)}.event-badge{display:inline-flex;align-items:center;gap:7px;background:var(--brand-soft);color:var(--brand);font-size:12px;font-weight:600;padding:5px 11px;border-radius:999px;margin-bottom:10px}.event-badge svg{width:13px;height:13px}.detail h2{font-family:var(--display);font-weight:700;font-size:clamp(19px,2.4vw,24px);letter-spacing:-.02em;line-height:1.2}.meta-row{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px}.meta{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--slate)}.meta svg{width:15px;height:15px;color:var(--slate-light)}.event-desc{margin-top:16px;font-size:14.5px;color:var(--ink);max-width:70ch}.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin:22px 0 16px}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{font-size:13px;font-weight:500;color:var(--slate);padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);transition:.12s}.chip:hover{border-color:var(--slate-light)}.chip.active{background:var(--brand);color:#fff;border-color:var(--brand)}.chip .n{opacity:.6;margin-left:5px}.search{position:relative;display:flex;align-items:center}.search svg{position:absolute;left:12px;width:16px;height:16px;color:var(--slate-light)}.search input{font-family:inherit;font-size:13.5px;color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:9px 12px 9px 34px;width:200px;outline:none;transition:.12s;background:var(--surface)}.search input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.group{margin-bottom:26px}.group:last-child{margin-bottom:0}.group-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.group-icon{width:30px;height:30px;border-radius:8px;flex:none;display:grid;place-items:center}.group-icon.doc{background:#e8f0fe;color:#2563eb}.group-icon.media{background:#fdebf3;color:#db2777}.group-icon.archive{background:var(--brand-soft);color:var(--brand)}.group-icon svg{width:16px;height:16px}.group-title{font-family:var(--display);font-weight:700;font-size:15px}.group-count{font-size:12.5px;color:var(--slate);margin-left:2px}.file{display:flex;align-items:center;gap:14px;padding:13px 14px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px;transition:.12s;background:var(--surface)}.file:hover{border-color:var(--slate-light);box-shadow:var(--shadow)}.file-ext{flex:none;width:44px;height:44px;border-radius:9px;display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:10.5px;letter-spacing:.02em;text-transform:uppercase}.file-info{flex:1;min-width:0}.file-name{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-sub{font-size:12.5px;color:var(--slate);margin-top:2px}.dl{flex:none;display:inline-flex;align-items:center;gap:7px;background:var(--brand);color:#fff;font-size:13px;font-weight:600;padding:9px 15px;border-radius:9px;transition:.12s}.dl:hover{background:var(--brand-deep)}.dl svg{width:15px;height:15px}.empty{text-align:center;padding:48px 20px;color:var(--slate)}.empty svg{width:34px;height:34px;color:var(--slate-light);margin-bottom:10px}.empty .h{font-family:var(--display);font-weight:700;font-size:16px;color:var(--ink);margin-bottom:4px}.toast-wrap{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:10px;align-items:center;width:calc(100% - 32px);max-width:420px}.toast{background:var(--ink);color:#fff;border-radius:12px;padding:14px 16px;display:flex;gap:12px;align-items:flex-start;box-shadow:0 12px 40px #17262b59;width:100%;animation:rise .25s ease}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.toast .ic{flex:none;width:30px;height:30px;border-radius:8px;background:#17a99f38;display:grid;place-items:center}.toast .ic svg{width:16px;height:16px;color:var(--accent)}.toast .body{flex:1}.toast .body .h{font-weight:600;font-size:14px}.toast .body .p{font-size:12.5px;color:#b7c7c9;margin-top:2px}.toast .expiry{font-size:11.5px;color:var(--accent);margin-top:6px;font-weight:600}.login-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1100px 560px at 50% -12%,rgba(23,169,159,.16),transparent 70%),var(--cloud)}.login-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:0 12px 44px #17262b24;padding:34px 30px 24px}.login-logo{height:32px;width:auto;display:block;margin-bottom:22px}.login-logo-fallback{font-family:var(--display);font-weight:800;font-size:20px;color:var(--brand);display:none;margin-bottom:22px}.login-card h1{font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:-.02em}.login-card .lead{color:var(--slate);font-size:14px;margin:4px 0 22px;line-height:1.45}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:6px}.field input{width:100%;font-family:inherit;font-size:14px;color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:11px 12px;outline:none;transition:.12s;background:var(--surface)}.field input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.pw-wrap{position:relative}.pw-wrap input{padding-right:44px}.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--slate-light)}.pw-toggle:hover{color:var(--slate);background:var(--cloud)}.pw-toggle svg{width:18px;height:18px}.login-btn{width:100%;background:var(--brand);color:#fff;font-size:14.5px;font-weight:600;padding:12px;border-radius:10px;margin-top:6px;transition:.12s}.login-btn:hover{background:var(--brand-deep)}.login-btn:disabled{opacity:.6;cursor:default}.login-error{display:none;align-items:flex-start;gap:8px;background:#fdecec;color:#b42318;border:1px solid #F6C9C6;font-size:12.5px;line-height:1.4;border-radius:9px;padding:10px 12px;margin-bottom:14px}.login-error.show{display:flex}.login-error svg{width:15px;height:15px;flex:none;margin-top:1px}.login-foot{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);display:flex;align-items:flex-start;gap:8px;color:var(--slate);font-size:12.5px;line-height:1.45}.login-foot svg{width:14px;height:14px;flex:none;margin-top:2px;color:var(--success)}.header-left{display:flex;align-items:center;gap:10px;min-width:0}.header-nav{display:flex;gap:2px;margin-left:6px}.header-nav button{font-size:13.5px;font-weight:600;color:var(--slate);padding:8px 12px;border-radius:8px;transition:.12s;white-space:nowrap}.header-nav button:hover{background:var(--cloud);color:var(--ink)}.header-nav button.active{background:var(--brand-soft);color:var(--brand)}@media (max-width:720px){.brand .sub,.divider{display:none}}@media (max-width:520px){.header-nav button{padding:8px 9px;font-size:12.5px}}.admin-list{position:sticky;top:92px;overflow:hidden}@media (max-width:939px){.admin-list{position:static}}.admin-list-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}.admin-list-body{padding:10px;max-height:70vh;overflow:auto}.admin-section{padding:clamp(18px,2.4vw,26px);margin-bottom:22px}.admin-section:last-child{margin-bottom:0}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px}.section-title{font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:-.01em}.section-count{font-size:12.5px;color:var(--slate)}.form-grid{display:grid;gap:0 16px;grid-template-columns:1fr}@media (min-width:560px){.form-grid{grid-template-columns:1fr 1fr}}.field textarea,.field select{width:100%;font-family:inherit;font-size:14px;color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:11px 12px;outline:none;transition:.12s;background:var(--surface)}.field textarea{resize:vertical;line-height:1.5}.field textarea:focus,.field select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.field .opt{font-weight:500;color:var(--slate-light)}.field-hint{font-size:11.5px;color:var(--slate-light);margin-top:6px}.hint-under{color:var(--slate);font-size:13px;margin-top:14px;text-align:center}.btn{background:var(--brand);color:#fff;font-size:14px;font-weight:600;padding:10px 16px;border-radius:9px;transition:.12s}.btn:hover{background:var(--brand-deep)}.btn:disabled{opacity:.6;cursor:default}.btn-sm{padding:7px 12px;font-size:13px}.btn-sec{background:var(--surface);color:var(--ink);border:1px solid var(--line)}.btn-sec:hover{background:var(--cloud)}.btn-danger{background:var(--surface);color:#b42318;border:1px solid #F1C4C1}.btn-danger:hover{background:#fdecec}.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.dropzone{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;border:1.5px dashed var(--line);border-radius:12px;padding:22px 18px;cursor:pointer;transition:.12s;margin-bottom:16px;background:var(--cloud)}.dropzone:hover{border-color:var(--accent);background:var(--brand-soft)}.dropzone.busy{opacity:.7;cursor:default}.dropzone input{display:none}.dz-title{font-family:var(--display);font-weight:700;font-size:14.5px;color:var(--brand)}.dz-sub{font-size:12px;color:var(--slate);max-width:44ch}.admin-files .file{gap:12px}.type-select{flex:none;font-family:inherit;font-size:12.5px;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:7px 8px;background:var(--surface);cursor:pointer}.icon-btn{flex:none;width:32px;height:32px;border-radius:8px;border:1px solid var(--line);color:var(--slate);font-size:13px;display:grid;place-items:center;transition:.12s}.icon-btn:hover{background:var(--cloud);color:var(--ink)}.icon-btn.danger:hover{background:#fdecec;color:#b42318;border-color:#f1c4c1}.grant-list{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.grant-row{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--line);border-radius:10px}.grant-info{flex:1;min-width:0}.grant-name{font-size:13.5px;font-weight:600}.grant-sub{font-size:12px;color:var(--slate)}.grant-add{border-top:1px solid var(--line);padding-top:18px;display:flex;flex-direction:column;gap:16px}.inline-add{display:flex;gap:8px}.inline-add input{flex:1}.search-results{margin-top:8px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}.search-result{width:100%;text-align:left;display:flex;flex-direction:column;padding:9px 12px;transition:.12s}.search-result:hover{background:var(--brand-soft)}.search-result .sr-name{font-size:13.5px;font-weight:600}.search-result .sr-sub{font-size:12px;color:var(--slate)}.search-empty{padding:10px 12px;font-size:12.5px;color:var(--slate)}.upload-queue{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.uq-item{border:1px solid var(--line);border-radius:10px;padding:10px 12px}.uq-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}.uq-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.uq-status{font-size:11.5px;color:var(--slate);flex:none}.uq-status.done{color:var(--success)}.uq-status.error{color:#b42318}.uq-bar{height:6px;border-radius:999px;background:var(--cloud);overflow:hidden}.uq-fill{height:100%;width:0;background:var(--brand);border-radius:999px;transition:width .2s ease}.uq-fill.done{background:var(--success)}.uq-fill.error{background:#dc2626}.uq-error{font-size:11.5px;color:#b42318;margin-top:6px}
