:root{--black:#111;--ink:#242424;--gold:#bd8b25;--gold2:#e2bd68;--paper:#f5f5f3;--line:#deded9;--white:#fff;--green:#25734a;--red:#a13b35}*{box-sizing:border-box}body{margin:0;font-family:"Microsoft JhengHei","PingFang TC",system-ui,sans-serif;color:var(--ink);background:var(--paper);font-size:16px}button,input,select,textarea{font:inherit}button{cursor:pointer}.login-view{min-height:100dvh;display:grid;place-items:center;background:radial-gradient(circle at 50% 20%,#303030,#0b0b0b 58%);padding:24px}.brand-mark{position:absolute;top:9%;font:900 110px/1 Georgia;color:rgba(226,189,104,.09);letter-spacing:-12px}.login-card{z-index:1;width:min(440px,100%);background:#fff;padding:38px;border-top:5px solid var(--gold);box-shadow:0 24px 70px #0008}.eyebrow{color:#7b5a1b;font-weight:800;letter-spacing:.08em}.login-card h1{font-size:34px;margin:6px 0 28px}.login-card label,.dialog-form label{display:grid;gap:7px;font-weight:700;margin-bottom:18px}.login-card input,.dialog-form input,.dialog-form select,.dialog-form textarea{width:100%;border:1px solid #cfcfc9;background:#fff;padding:12px 13px;border-radius:7px;outline:none}.login-card input:focus,.dialog-form input:focus,.dialog-form select:focus,.dialog-form textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px #bd8b2526}.primary{background:var(--black);color:#fff;border:0;border-radius:7px;padding:11px 17px;font-weight:800}.primary:hover{background:#2c2c2c}.login-card .primary{width:100%;padding:13px}.message{min-height:24px;color:var(--red);margin:14px 0 0}.app{min-height:100dvh;display:grid;grid-template-columns:250px 1fr}.sidebar{position:sticky;top:0;height:100dvh;background:var(--black);color:#fff;padding:24px 15px;display:flex;flex-direction:column}.logo{display:flex;align-items:center;gap:12px;padding:0 10px 25px;border-bottom:1px solid #333;font-weight:900}.logo>span{display:grid;place-items:center;width:47px;height:47px;border:1px solid var(--gold2);color:var(--gold2);font:800 20px Georgia}.logo small{display:block;color:#999;font-weight:500;margin-top:3px}.sidebar nav{display:grid;gap:6px;padding:22px 0}.sidebar nav button{border:0;background:transparent;color:#bbb;text-align:left;padding:13px 16px;border-radius:7px;font-weight:700}.sidebar nav button:hover,.sidebar nav button.active{background:#2a2a28;color:#fff}.sidebar nav button.active{box-shadow:inset 3px 0 var(--gold)}.account{margin-top:auto;border-top:1px solid #333;padding:18px 10px 0;display:grid;gap:4px}.account small{color:var(--gold2)}.account button{margin-top:10px;background:transparent;border:1px solid #555;color:#bbb;padding:8px;border-radius:6px}main{min-width:0;padding:0 32px 40px}.topbar{height:94px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);margin-bottom:28px}.topbar p{margin:0;color:#777;font-size:13px}.topbar h2{margin:3px 0 0}.topbar .primary{margin-left:auto}.menu-btn{display:none;border:0;background:transparent;font-size:24px}.view{display:none}.view.active{display:block}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.stats article,.panel{background:#fff;border:1px solid var(--line);box-shadow:0 4px 18px #00000008}.stats article{padding:22px;border-top:3px solid var(--gold)}.stats span,.stats small{display:block;color:#70706b}.stats strong{display:block;font-size:29px;margin:10px 0}.panel{padding:0 20px 12px}.panel-head,.section-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.panel-head{padding:19px 0;border-bottom:1px solid var(--line)}.panel-head h3,.section-head h3{margin:0;font-size:22px}.panel-head p,.section-head p{margin:4px 0 0;color:#70706b}.section-head{margin-bottom:18px}.text-btn{border:0;background:transparent;color:#7b5a1b;font-weight:800}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:left;padding:14px 12px;border-bottom:1px solid #ecece8}th{font-size:13px;color:#6c6c67}td{font-size:15px}.empty{text-align:center;padding:48px 16px;color:#777}.badge{display:inline-block;padding:5px 9px;border-radius:999px;background:#eee;font-size:12px;font-weight:800}.badge.paid,.badge.completed{background:#dff2e7;color:#17623b}.badge.overdue{background:#f5deda;color:#8f302b}.badge.partially_paid{background:#fff0c9;color:#785710}.notice{margin:-12px 0 20px;padding:12px 15px;border-radius:7px;background:#e3f3e9;color:#145c37;font-weight:700}dialog{border:0;padding:0;width:min(650px,calc(100% - 28px));max-height:90dvh;overflow:auto;box-shadow:0 25px 80px #0007}dialog::backdrop{background:#0009}.dialog-form{padding:22px}.dialog-form.large{width:100%}.dialog-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin:-4px 0 22px;padding-bottom:14px}.dialog-head h3{margin:0}.dialog-head button{border:0;background:transparent;font-size:28px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.wide{grid-column:1/-1}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding-top:18px}.dialog-actions button:not(.primary),.items-head button{border:1px solid #bbb;background:#fff;border-radius:6px;padding:9px 14px}.items-head{display:flex;justify-content:space-between;align-items:center;margin:8px 0}.item-row{display:grid;grid-template-columns:1fr 80px 110px 42px;gap:8px;margin-bottom:8px}.item-row input{margin:0}.item-row button{border:0;background:#f5e3e0;color:var(--red);border-radius:6px}.total-line{text-align:right;font-size:19px;padding:14px 0 20px}.total-line strong{font-size:25px;margin-left:12px}@media(max-width:980px){.stats{grid-template-columns:1fr 1fr}.app{grid-template-columns:1fr}.sidebar{position:fixed;left:-270px;z-index:20;width:250px;transition:.2s}.sidebar.open{left:0;box-shadow:20px 0 50px #0005}.menu-btn{display:block}main{padding:0 18px 35px}.topbar{height:80px}.topbar .primary{padding:9px 12px}.section-head{align-items:flex-end}}@media(max-width:600px){body{font-size:16px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stats article{padding:15px}.stats strong{font-size:22px}.topbar h2{font-size:20px}.topbar .primary{font-size:14px}.panel{padding:0 10px}.section-head p{display:none}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.item-row{grid-template-columns:1fr 68px 90px 38px}.login-card{padding:28px 22px}}
