:root{--bg: #0f1420;--panel: #171e2e;--panel2: #1d2638;--border: #27324a;--text: #e8ecf5;--muted: #8a93a8;--accent: #2f5fe0;--accent-h: #4272ee;--green: #2dbd6e;--amber: #e0a92f;--red: #e05252}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5}button{font:inherit;cursor:pointer;border:none;border-radius:10px}input,select{font:inherit;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 10px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}input[type=date],input[type=time],input[type=datetime-local]{color-scheme:dark}a{color:var(--accent-h);text-decoration:none}.btn{background:var(--accent);color:#fff;padding:9px 16px;font-weight:600}.btn:hover{background:var(--accent-h)}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn.ghost:hover{color:var(--text);border-color:var(--muted)}.btn.danger{background:var(--red)}.btn.sm{padding:5px 10px;font-size:13px;border-radius:8px}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap}.b-green{background:#2dbd6e26;color:var(--green)}.b-amber{background:#e0a92f26;color:var(--amber)}.b-red{background:#e0525226;color:var(--red)}.b-gray{background:#8a93a826;color:var(--muted)}.err{color:var(--red);font-size:14px;margin-top:8px;min-height:21px}.term{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}.term h1{font-size:22px;margin-bottom:4px}.term .sub{color:var(--muted);margin-bottom:24px}.pin-dots{display:flex;gap:14px;justify-content:center;margin:18px 0 26px}.pin-dots i{width:16px;height:16px;border-radius:50%;background:var(--panel2);border:1px solid var(--border)}.pin-dots i.on{background:var(--accent);border-color:var(--accent)}.pad{display:grid;grid-template-columns:repeat(3,84px);gap:12px}.pad button{height:72px;font-size:26px;font-weight:600;background:var(--panel);color:var(--text);border:1px solid var(--border)}.pad button:active{background:var(--panel2)}.pad button.ok{background:var(--accent);border-color:var(--accent);font-size:20px}.pad button.ok:disabled{opacity:.4}.term-card{background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:28px 26px;width:100%;max-width:420px}.term-card .name{font-size:24px;font-weight:700;margin-bottom:4px}.term-card .info{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border);font-size:15px}.term-card .info span:first-child{color:var(--muted)}.term-actions{display:flex;flex-direction:column;gap:12px;margin-top:22px}.t-btn{height:64px;font-size:19px;font-weight:700;color:#fff}.t-btn.start{background:var(--green)}.t-btn.lunch{background:var(--amber);color:#1d1503}.t-btn.stop{background:var(--red)}.t-btn:disabled{opacity:.6}.done-icon{width:74px;height:74px;border-radius:50%;margin:0 auto 16px;background:#2dbd6e26;color:var(--green);font-size:38px;line-height:74px}.layout{display:flex;min-height:100dvh}.sidebar{width:224px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);padding:20px 12px;display:flex;flex-direction:column;gap:4px}.sidebar .logo{font-size:17px;font-weight:700;padding:0 10px 16px}.sidebar .logo span{color:var(--accent-h)}.sidebar a{padding:9px 12px;border-radius:9px;color:var(--muted);font-weight:500}.sidebar a:hover{color:var(--text);background:var(--panel2)}.sidebar a.active{color:#fff;background:var(--accent)}.sidebar .spacer{flex:1}.sidebar .who{padding:0 10px;font-size:13px;color:var(--muted);margin-bottom:8px}.content{flex:1;padding:26px 30px;max-width:1200px}.content h1{font-size:21px;margin-bottom:18px}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:16px}.toolbar label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.toolbar .grow{flex:1}.cards{display:flex;gap:14px;margin-bottom:20px;flex-wrap:wrap}.stat{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px 18px;min-width:150px}.stat .v{font-size:26px;font-weight:700}.stat .l{font-size:13px;color:var(--muted)}.stat.green .v{color:var(--green)}.stat.amber .v{color:var(--amber)}.stat.red .v{color:var(--red)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--muted);font-size:12.5px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;padding:11px 14px;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}tr:last-child td{border-bottom:none}tr.total td{font-weight:700;background:var(--panel2)}td.num,th.num{text-align:right}td .muted{color:var(--muted);font-size:13px}.row-actions{display:flex;gap:6px;justify-content:flex-end}.empty{padding:30px;text-align:center;color:var(--muted)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#05080fb3;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:22px;width:100%;max-width:430px}.modal h2{font-size:17px;margin-bottom:16px}.modal .form{display:flex;flex-direction:column;gap:12px}.modal label{display:flex;flex-direction:column;gap:5px;font-size:13.5px;color:var(--muted)}.modal .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center}.login{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:32px;width:100%;max-width:360px}.login h1{font-size:20px;margin-bottom:4px}.login .sub{color:var(--muted);font-size:14px;margin-bottom:20px}.login .form{display:flex;flex-direction:column;gap:12px}.login input{padding:11px 12px}.login .btn{padding:12px;margin-top:6px}.audit{background:var(--panel2);border-radius:8px;padding:10px 14px;margin:6px 0;font-size:13px}.audit div{padding:3px 0;color:var(--muted)}.audit b{color:var(--text);font-weight:600}.qr-box{display:inline-block;line-height:0}.qr-box img{display:block;height:auto;max-width:100%}.qr-wrap{overflow:auto;padding-bottom:8px}.qr-sheet{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:12px;margin:0 auto;padding:12mm;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center;zoom:.55}.qr-sheet.portrait{width:210mm;height:297mm}.qr-sheet.landscape{width:297mm;height:210mm}.qr-sheet .qr-box{position:absolute;transform:translate(-50%,-50%);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.qr-sheet .qr-box:active{cursor:grabbing}.qr-foot{display:flex;flex-direction:column;gap:4mm}.hint{color:var(--muted);font-size:13px;margin:0 0 10px}.qr-title{font-weight:700}.qr-note{color:var(--muted)}@media print{body{background:#fff;color:#000}.sidebar,.no-print{display:none!important}.content{padding:0}html,body,.layout,.content{height:auto!important;min-height:0!important;overflow:visible!important}.qr-sheet,.qr-sheet.portrait,.qr-sheet.landscape{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;background:none;border:none;border-radius:0;margin:0;padding:8mm;zoom:1;overflow:hidden}.qr-wrap{overflow:visible;padding:0}.qr-sheet .qr-box{cursor:default}.qr-title,.qr-caption{color:#000}.qr-note{color:#444}}@media (max-width: 760px){.layout{flex-direction:column}.sidebar{width:100%;flex-direction:row;flex-wrap:wrap;align-items:center;padding:10px;border-right:none;border-bottom:1px solid var(--border)}.sidebar .logo{padding:0 10px}.sidebar .who,.sidebar .spacer{display:none}.content{padding:16px}}.cheer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#080b12ed;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:cheer-out .4s ease-in 1.6s forwards}.cheer:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 42%,var(--cheer-tint),transparent 65%)}.cheer>*{position:relative}.cheer .emo{font-size:130px;line-height:1;animation:cheer-pop .45s cubic-bezier(.34,1.56,.64,1) both}.cheer .wish{font-size:30px;font-weight:700;text-align:center;padding:0 16px;animation:cheer-rise .4s ease-out .15s both}.cheer .whom{font-size:17px;color:var(--muted);animation:cheer-rise .4s ease-out .25s both}.cheer.c-green{--cheer-tint: rgba(45, 189, 110, .35)}.cheer.c-amber{--cheer-tint: rgba(224, 169, 47, .35)}.cheer.c-blue{--cheer-tint: rgba(47, 95, 224, .4)}@keyframes cheer-pop{0%{transform:scale(.3) translateY(30px);opacity:0}60%{transform:scale(1.15) translateY(-6px);opacity:1}to{transform:scale(1) translateY(0);opacity:1}}@keyframes cheer-rise{0%{transform:translateY(18px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes cheer-out{to{opacity:0}}@media (prefers-reduced-motion: reduce){.cheer .emo,.cheer .wish,.cheer .whom{animation:none}}@media (max-width: 560px){.cheer .emo{font-size:96px}.cheer .wish{font-size:24px}}
