@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Lora:wght@500;600;700&family=Space+Mono:wght@400;700&display=swap";:root{--background:209 40% 96%;--foreground:222 47% 11%;--card:210 40% 98%;--popover:214 31% 91%;--primary:200 98% 39%;--primary-foreground:204 100% 97%;--secondary:215 24% 26%;--muted-foreground:215 19% 34%;--accent:210 40% 98%;--border:212 26% 83%;--input:212 26% 83%;--destructive:0 72% 50%;--sidebar:210 40% 98%;--font-sans:"Inter", sans-serif;--font-serif:"Lora", serif;--font-mono:"Space Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;font-size:14px}body{min-width:320px;min-height:100vh;font-family:var(--font-sans);color:hsl(var(--foreground));background:hsl(var(--background));text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}body.app-modal-open{overflow:hidden}button,input,textarea,select{font:inherit;color:inherit}input:focus,textarea:focus,select:focus{border-color:hsl(var(--primary) / .5);box-shadow:0 0 0 .2rem hsl(var(--primary) / .14);outline:none}textarea{resize:vertical}code,pre{font-family:var(--font-mono)}#root,.app-shell{min-height:100vh}.app-toast-stack{z-index:80;pointer-events:none;width:min(100vw - 2rem,28rem);position:fixed;top:1rem;right:1rem}.app-toast{border:1px solid hsl(var(--border));background:hsl(var(--card) / .98);pointer-events:auto;border-radius:1rem;align-items:flex-start;gap:.75rem;padding:.9rem 1rem;display:flex;box-shadow:0 18px 36px #0e18252e}.app-toast-error{border-color:hsl(var(--destructive) / .2);background:hsl(var(--destructive) / .1);color:hsl(var(--destructive))}.app-toast-copy{flex:1;min-width:0}.app-toast-copy strong{margin-bottom:.2rem;display:block}.app-toast-copy p{color:inherit;margin:0}.app-toast-close{border:1px solid hsl(var(--destructive) / .22);width:2rem;height:2rem;color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:999px;flex:none}.app-toast-close:hover{background:hsl(var(--destructive) / .08)}.app-mobile-overlay{z-index:35;background:#0f17298a;border:0;position:fixed;inset:0}.app-sidebar,.app-header,.app-footer,.content-card,.summary-card,.status-banner,.login-card,.login-panel,.sidebar-user-card,.app-modal-panel{background:hsl(var(--card) / .98);border:1px solid hsl(var(--border));box-shadow:0 14px 34px #0e182514}.app-sidebar{z-index:40;background:hsl(var(--sidebar) / .98);flex-direction:column;width:16rem;transition:width .18s,transform .18s;display:flex;position:fixed;top:0;bottom:0;left:0}.app-sidebar.is-collapsed{width:5rem}.app-sidebar-head,.app-header,.app-footer,.card-header,.card-toolbar,.page-header-row,.page-header-actions,.sidebar-user-head,.table-actions,.action-row,.pagination-row,.pagination-actions,.subsection-header{align-items:center;gap:.75rem;display:flex}.app-sidebar-head{border-bottom:1px solid hsl(var(--border));justify-content:space-between;min-height:4rem;padding:1rem}.brand-lockup,.sidebar-nav-main,.header-user-button,.header-user-menu-item,.app-header-brand,.search-field,.inline-action-button{align-items:center;gap:.75rem;display:flex}.brand-logo,.app-header-brand img{object-fit:contain;flex:none;width:2.25rem;height:2.25rem}.brand-copy,.sidebar-nav-copy,.sidebar-child-copy,.header-user-copy,.page-header-copy{min-width:0}.brand-title,.page-header-copy h1,.card-header h2,.subsection-header h3,.login-copy h1,.login-panel h2,.summary-card strong,.list-card strong,.modal-info-card strong{font-family:var(--font-serif);letter-spacing:-.03em;color:hsl(var(--foreground));margin:0}.summary-card strong,.list-card strong,.modal-info-card strong,.sidebar-user-copy strong,.header-user-copy strong,.login-brand strong,.login-brand span{display:block}.brand-subtitle,.page-header-copy p,.summary-card small,.status-banner p,.list-card small,.page-header-copy small,.toolbar-note,.empty-state,.sidebar-user-copy p,.sidebar-user-note,.login-copy p,.login-note,.modal-info-card span,.confirm-note,.muted-copy,.header-user-copy small{color:hsl(var(--muted-foreground));margin:0;line-height:1.55}.brand-subtitle,.sidebar-nav-copy small,.sidebar-child-copy small,.page-header-copy p,.summary-card small,.list-card small,.status-banner p,.modal-info-card span{display:block}.sidebar-head-actions{gap:.5rem;display:flex}.sidebar-desktop-toggle,.sidebar-mobile-close,.header-mobile-trigger.icon-button{display:none}.app-sidebar-nav,.page-shell,.card-stack,.detail-list,.preview-list,.modal-stack{gap:1rem;display:grid}.app-sidebar-nav{align-content:start;padding:1rem .75rem;overflow:hidden auto}.sidebar-menu-group,.sidebar-menu-children{gap:.5rem;display:grid}.sidebar-menu-parent{color:hsl(var(--muted-foreground));padding:.15rem .9rem .3rem}.sidebar-nav-button,.sidebar-child-button,.sidebar-icon-button,.shortcut-card,.header-user-menu-item{width:100%;color:hsl(var(--foreground));text-align:left;cursor:pointer;background:0 0;border:0}.sidebar-nav-button,.sidebar-child-button,.sidebar-icon-button,.header-user-button,.app-button,.inline-action-button,.icon-button,.toggle-pill,.shortcut-card{transition:transform .15s,background-color .15s,color .15s,border-color .15s,box-shadow .15s}.sidebar-nav-button,.sidebar-child-button,.shortcut-card,.header-user-menu-item{border-radius:.9rem}.sidebar-nav-button{justify-content:space-between;align-items:center;padding:.85rem .9rem;display:flex}.sidebar-subnav-button{margin-left:0;padding-left:1.4rem}.sidebar-nav-button:hover,.sidebar-child-button:hover,.shortcut-card:hover,.app-button:hover,.inline-action-button:hover,.icon-button:hover{transform:translateY(-1px)}.sidebar-nav-button.is-active,.sidebar-nav-group.has-active>.sidebar-nav-button{background:hsl(var(--primary) / .12)}.sidebar-chevron{transition:transform .15s}.sidebar-chevron.is-open{transform:rotate(180deg)}.sidebar-children{gap:.45rem;margin:.2rem 0 0 1.4rem;padding-left:1rem;display:grid;position:relative}.sidebar-children:before{content:"";background:hsl(var(--border));width:1px;position:absolute;top:0;bottom:.3rem;left:.2rem}.sidebar-child-button{grid-template-columns:auto auto 1fr;align-items:center;gap:.65rem;padding:.72rem .85rem;display:grid}.sidebar-child-button.is-active,.sidebar-icon-button.is-active,.app-button.primary,.app-button.warning,.app-button.danger{color:hsl(var(--primary-foreground));background:linear-gradient(135deg, hsl(var(--primary)), #3595e3);box-shadow:0 10px 22px hsl(var(--primary) / .22)}.sidebar-branch{background:hsl(var(--border));width:.65rem;height:1px}.sidebar-collapsed-children{gap:.5rem;margin-top:.65rem;display:grid}.sidebar-icon-button,.icon-button{border-radius:.85rem;justify-content:center;align-items:center;display:inline-flex}.sidebar-icon-button{min-height:2.85rem}.sidebar-user-card{background:hsl(var(--accent) / .96);border-radius:1rem;margin:auto .75rem .75rem;padding:.9rem}.sidebar-user-card.is-collapsed{padding:.75rem}.sidebar-avatar,.header-avatar{background:linear-gradient(135deg, hsl(var(--primary)), #3595e3);width:2.5rem;height:2.5rem;color:hsl(var(--primary-foreground));border-radius:.9rem;flex:none;justify-content:center;align-items:center;font-weight:800;display:inline-flex}.status-pill{background:hsl(var(--primary) / .12);color:hsl(var(--primary));border-radius:999px;justify-content:center;align-items:center;padding:.34rem .72rem;font-size:.76rem;font-weight:700;display:inline-flex}.status-pill.subtle{background:hsl(var(--secondary) / .1);color:hsl(var(--secondary))}.status-pill.is-highlight,.app-button.warning{color:#fff;background:linear-gradient(135deg,#ee862b,#ed6931)}.app-header,.app-footer{z-index:25;justify-content:flex-end;padding:.75rem 1.25rem;transition:left .18s;position:fixed;left:16rem;right:0}.app-header.is-sidebar-collapsed,.app-footer.is-sidebar-collapsed{left:5rem}.app-header{height:4rem;top:0}.app-footer{height:3rem;bottom:0}.app-header-brand span,.app-footer p{font-size:.92rem;font-weight:600}.header-user-menu-wrap{justify-content:flex-end;align-items:center;gap:.75rem;display:flex;position:relative}.header-user-button{border:1px solid hsl(var(--border));background:hsl(var(--background));cursor:pointer;border-radius:999px;max-width:28rem;padding:.35rem .5rem}.header-user-menu{background:hsl(var(--popover));border:1px solid hsl(var(--border));z-index:5;border-radius:1rem;min-width:14rem;padding:.4rem;position:absolute;top:calc(100% + .5rem);right:0;box-shadow:0 14px 34px #0e18251a}.header-user-menu-item{padding:.75rem .85rem}.header-user-menu-item:hover{background:hsl(var(--accent))}.header-user-chevron.is-open{transform:rotate(180deg)}.header-mobile-trigger{display:none}.brand-copy,.sidebar-nav-copy,.header-user-copy{overflow:hidden}.brand-title,.sidebar-nav-copy strong,.header-user-copy strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-content{padding:1.25rem;transition:left .18s;position:fixed;inset:4rem 0 3rem 16rem;overflow:auto}.app-content.is-sidebar-collapsed{left:5rem}.page-header-row,.card-header,.card-toolbar,.pagination-row,.subsection-header{justify-content:space-between}.page-shell{align-content:start}.page-header-copy h1,.login-copy h1{font-size:clamp(2rem,2.8vw,2.55rem)}.card-header h2,.subsection-header h3,.login-panel h2{font-size:1.45rem}.page-kicker{color:hsl(var(--primary));text-transform:uppercase;letter-spacing:.14em;margin-bottom:.35rem;font-size:.68rem;font-weight:800;display:inline-block}.page-header-actions,.pagination-actions,.pill-row,.toggle-pill-row{flex-wrap:wrap}.toggle-pill-row{gap:.6rem;display:flex}.app-button,.inline-action-button,.icon-button,.toggle-pill,.file-trigger{font:inherit;font-weight:700}.icon-sm{flex:none;width:1rem;height:1rem}.icon-md{flex:none;width:1.1rem;height:1.1rem}.app-button,.inline-action-button,.toggle-pill{border:1px solid hsl(var(--border));border-radius:999px;justify-content:center;align-items:center;gap:.5rem;min-height:2.75rem;padding:.72rem 1rem;display:inline-flex}.app-button.secondary,.inline-action-button,.toggle-pill,.icon-button.ghost,.file-trigger{background:hsl(var(--background));color:hsl(var(--foreground))}.app-button:disabled,.inline-action-button:disabled,.icon-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.inline-action-button.danger{color:hsl(var(--destructive))}.icon-button{border:1px solid hsl(var(--border));background:hsl(var(--background));cursor:pointer;width:2.5rem;height:2.5rem}.summary-grid,.content-grid,.field-grid,.checkbox-grid,.modal-info-grid,.modal-two-column{gap:1rem;display:grid}.summary-grid.three-up{grid-template-columns:repeat(3,minmax(0,1fr))}.summary-grid.two-up,.field-grid.two-columns,.checkbox-grid.two-columns,.content-grid.two-columns,.modal-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-card,.content-card,.detail-card,.list-card,.shortcut-card,.modal-info-card,.preview-panel{border-radius:1rem}.summary-card,.modal-info-card,.detail-card,.list-card,.preview-panel,.shortcut-card{border:1px solid hsl(var(--border));background:hsl(var(--accent) / .92);padding:1rem}.content-card{padding:1rem}.summary-card span,.toolbar-note,.modal-info-card span{letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;font-weight:700;display:block}.summary-card strong{margin-top:.3rem;font-size:1.2rem}.status-banner strong{margin-bottom:.2rem;display:block}.status-banner{border-radius:1rem;padding:1rem 1.1rem}.status-banner.is-error,.app-button.danger{background:hsl(var(--destructive) / .1);color:hsl(var(--destructive));border-color:hsl(var(--destructive) / .2);box-shadow:none}.status-banner.is-no-material-note{background:hsl(var(--destructive) / .08);color:hsl(var(--destructive));border-color:hsl(var(--destructive) / .18);box-shadow:none}.status-banner.compact{padding:.9rem 1rem}.search-field{border:1px solid hsl(var(--input));background:hsl(var(--background));border-radius:999px;width:100%;max-width:28rem;padding:0 .9rem}.search-field input,.modal-form input,.modal-form textarea,.modal-form select,.import-textarea{border:1px solid hsl(var(--input));background:hsl(var(--background));width:100%;color:hsl(var(--foreground));font:inherit;border-radius:.9rem;padding:.78rem .9rem}.modal-form,.table-card{gap:1rem;display:grid}.search-field input::placeholder,.modal-form input::placeholder,.modal-form textarea::placeholder,.import-textarea::placeholder{color:hsl(var(--muted-foreground))}.search-field input{background:0 0;border:0;border-radius:999px;padding:.85rem 0}.modal-form label{gap:.42rem;display:grid}.modal-form label span{font-size:.82rem;font-weight:700}.formula-input-group{gap:.55rem;display:grid}.formula-input-header{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.formula-input-header span{font-size:.82rem;font-weight:700}.formula-input-header small{color:hsl(var(--muted-foreground));font-weight:600}.formula-display-text,.status-banner p.formula-display-text{white-space:pre-wrap;word-break:break-word;display:block}.day-picker-panel,.upload-panel,.file-chip-list{gap:1rem;display:grid}.file-chip-list{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));max-height:10rem;padding-right:.2rem;overflow:auto}.calendar-weekdays,.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:.75rem;display:grid}.calendar-weekday{background:hsl(var(--accent) / .72);min-height:2rem;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.06em;border-radius:.85rem;justify-content:center;align-items:center;font-size:.76rem;font-weight:800;display:flex}.calendar-empty{min-height:2.85rem}.day-pill{width:100%;min-width:0;min-height:2.85rem;padding:.72rem .5rem}.field-span-full{grid-column:1/-1}.checkbox-card{grid-template-columns:auto 1fr;align-items:flex-start;gap:.75rem;display:grid}.checkbox-card input{width:1rem;height:1rem;margin-top:.2rem}.table-wrap{border:1px solid hsl(var(--border));border-radius:1rem;overflow:auto}.data-table{border-collapse:collapse;background:hsl(var(--background));width:100%;min-width:56rem}.data-table th,.data-table td{text-align:left;vertical-align:top;border-bottom:1px solid hsl(var(--border));padding:.9rem}.data-table th{background:hsl(var(--accent));color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.08em;font-size:.68rem}.table-actions,.pill-row.wrap{align-items:flex-start}.data-table tbody tr.is-selected-row{background:hsl(var(--primary) / .08)}.pill-row{gap:.45rem;display:flex}.list-card-actions{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.toggle-pill.is-active{background:hsl(var(--primary));border-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}.file-trigger input{display:none}.import-textarea{font-family:var(--font-mono);font-size:.9rem}.pagination-row{margin-top:1rem}.empty-state{text-align:center;padding:1.2rem 1rem}.detail-list,.preview-list{max-height:25rem;overflow:auto}.modal-two-column{grid-template-columns:minmax(0,1.2fr) minmax(18rem,.9fr);align-items:start}.preview-panel{gap:1rem;display:grid}.app-modal-backdrop{z-index:50;background:#0f172999;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.app-modal-panel{border-radius:1.25rem;grid-template-rows:auto minmax(0,1fr) auto;gap:1rem;width:min(100%,56rem);max-height:calc(100vh - 2rem);padding:1.25rem;display:grid;overflow:hidden}.app-modal-panel-sm{max-width:28rem}.app-modal-panel-md{max-width:40rem}.app-modal-panel-lg{max-width:56rem}.app-modal-panel-xl{max-width:74rem}.app-modal-panel-xxl{width:90vw;max-width:90vw;height:min(100vh - 2rem,58rem)}.app-modal-header,.app-modal-footer{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.app-modal-title-row{align-items:center;gap:.75rem;min-width:0;display:flex}.app-modal-title-icon{color:hsl(var(--primary));flex:none;justify-content:center;align-items:center;display:inline-flex}.app-modal-heading h2{font-family:var(--font-serif);margin:0}.app-modal-heading p{color:hsl(var(--muted-foreground));margin:.35rem 0 0}.app-modal-body{min-height:0;padding-right:.25rem;overflow:auto}.attendance-summary-form{min-height:100%}.attendance-summary-table-wrap{max-height:24rem}.attendance-summary-table th{z-index:1;position:sticky;top:0}.attendance-summary-table tbody tr{cursor:pointer}.attendance-day-detail-card{gap:1rem;display:grid}.attendance-calendar-grid{align-items:stretch}.attendance-day-card{border:1px solid hsl(var(--border));background:hsl(var(--background));border-radius:1rem;gap:.3rem;min-height:5.75rem;padding:.75rem;display:grid}.attendance-day-card strong{font-size:.95rem}.attendance-day-card span,.attendance-day-card small{color:hsl(var(--muted-foreground));line-height:1.45}.attendance-day-card.is-worked{background:hsl(var(--primary) / .08);border-color:hsl(var(--primary) / .22)}.attendance-day-card.is-no-work{background:#fff9e6;border-color:#f5d166}.attendance-day-card.is-no-work strong,.attendance-day-card.is-no-work span,.attendance-day-card.is-no-work small{color:#9d6607}.attendance-day-card.is-no-material{background:hsl(var(--destructive) / .1);border-color:hsl(var(--destructive) / .28)}.attendance-day-card.is-no-material strong,.attendance-day-card.is-no-material span,.attendance-day-card.is-no-material small{color:hsl(var(--destructive))}.app-modal-close{color:hsl(var(--primary));border-color:hsl(var(--primary) / .28)}.app-modal-footer{justify-content:flex-end}.confirm-note{margin:0}.support-panel{gap:1.25rem;display:grid}.support-person strong{font-family:var(--font-serif);margin:0;font-size:1.5rem;display:block}.support-person p,.support-note{color:hsl(var(--muted-foreground));margin:0;line-height:1.55}.support-contact-list{gap:.85rem;display:grid}.support-contact-item{color:hsl(var(--foreground));align-items:center;gap:.65rem;text-decoration:none;display:inline-flex}.support-contact-item:hover{color:hsl(var(--primary))}.support-note{border-top:1px solid hsl(var(--border));padding-top:1rem}.login-shell{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{border-radius:1.5rem;grid-template-columns:minmax(0,1.2fr) minmax(20rem,.9fr);gap:1rem;width:min(70rem,100%);padding:1rem;display:grid}.login-copy,.login-panel{border-radius:1.25rem;padding:1.25rem}.login-brand{align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.login-brand strong{font-size:1.15rem}.login-brand span{color:hsl(var(--muted-foreground));margin-top:.12rem}.login-brand img{object-fit:contain;width:3rem;height:3rem}.login-button{width:100%}.login-panel{align-content:start;gap:1rem;display:grid}@media (width<=1180px){.summary-grid.three-up,.content-grid.two-columns,.modal-two-column,.login-card{grid-template-columns:1fr}}@media (hover:none) and (width<=960px),(width<=640px){.app-sidebar{width:min(18rem,100vw - 2rem);transform:translate(-100%)}.app-sidebar.is-open{transform:translate(0)}.sidebar-mobile-close,.header-mobile-trigger.icon-button{display:inline-flex}.sidebar-desktop-toggle,.app-header-brand{display:none}.header-user-menu-wrap{justify-content:space-between;width:100%}.app-header,.app-footer,.app-content,.app-header.is-sidebar-collapsed,.app-footer.is-sidebar-collapsed,.app-content.is-sidebar-collapsed{left:0}}@media (width<=720px){.app-header,.app-footer,.app-content,.page-header-row,.page-header-actions,.card-toolbar,.pagination-row,.pagination-actions,.subsection-header,.app-modal-header,.app-modal-footer{flex-direction:column;align-items:stretch}.summary-grid.two-up,.modal-info-grid,.field-grid.two-columns,.checkbox-grid.two-columns{grid-template-columns:1fr}.data-table{min-width:44rem}}
