/* PUXU Atelier · interface edition 1.1.0 · local assets only */
:root{--ink:#102e2a;--green:#123f35;--green-deep:#092b23;--gold:#b78d4b;--champagne:#e7d0a3;--cream:#f5f2eb;--white:#fffefa;--muted:#64756e;--line:#e0e4db;--danger:#a7483d;--sans:Inter,"PingFang TC","Microsoft JhengHei","Noto Sans CJK TC",system-ui,sans-serif;--serif:"Noto Serif TC","Songti TC","PMingLiU",Georgia,serif;--shadow-soft:0 12px 40px #163b2c08;--shadow-float:0 20px 60px #092b2314}
html{scroll-padding-top:100px;scroll-behavior:smooth}body{background:var(--cream);color:var(--ink);font:14px/1.65 var(--sans);-webkit-font-smoothing:antialiased}body:has(dialog[open]){overflow:hidden}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit}::selection{background:#d5bd88;color:#102e2a}:focus-visible{outline:3px solid #b78d4b;outline-offset:4px}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:0;border-color:#829c8b;box-shadow:0 0 0 4px #b78d4b21}.skip-link:focus{z-index:1000;background:var(--green-deep);color:white;padding:14px 22px}
.btn{min-height:46px;padding:12px 21px;gap:10px;border-radius:10px;font-size:13px;font-weight:600;line-height:1.45;letter-spacing:.02em;transition:background .18s,color .18s,box-shadow .18s,transform .18s;border:1px solid transparent;white-space:normal;text-align:center}.btn svg{height:17px;width:17px;flex:none}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn-primary{color:#fffdf7;background:var(--green);box-shadow:0 5px 12px #0d372414}.btn-primary:hover:not(:disabled){background:#205445;box-shadow:0 8px 22px #0d372428}.btn-secondary{background:#fffefa;border-color:#d9dfd4;color:var(--ink)}.btn-secondary:hover:not(:disabled){background:#f0f3e9;border-color:#a9b9a5}.btn-ghost{color:var(--green);background:transparent}.btn-ghost:hover:not(:disabled){background:#123f3509}.btn-danger{background:#a7483d;color:#fff}.btn-small{font-size:12px;min-height:36px;padding:8px 13px}.btn-icon{width:38px;height:38px;display:inline-grid;place-items:center;flex:none;border:1px solid transparent;border-radius:9px;color:inherit;background:transparent}.btn-icon:hover{background:#123f3509;border-color:#d9dfd4}.btn-icon svg{width:18px;height:18px}.text-link{font-size:13px;font-weight:600;gap:8px}.text-link svg{width:15px;height:15px}
.brand{gap:13px}.brand-mark{width:46px;height:49px;border-radius:13px 13px 18px 13px;background:linear-gradient(145deg,#235a46,#0c3328);border:1px solid #bca56870;box-shadow:inset 0 0 0 4px #ffffff05;display:grid;place-items:center;color:#e6d1a2;font:27px var(--serif);flex:none}.brand-name{font-size:19px;font-weight:700;letter-spacing:.15em;line-height:1.6}.brand-subtitle{display:block;font-size:8px;letter-spacing:.27em;color:var(--muted);line-height:1.6;margin-top:1px}.software-icon{border-radius:16px;width:53px;height:53px;flex:none;display:grid;place-items:center}.software-icon svg{height:25px;width:25px}.tone-0{color:#2d6a55;background:#e3eee4}.tone-1{color:#99723a;background:#f3e9d3}.tone-2{color:#526c9a;background:#e6ebf5}.tone-3{color:#866180;background:#eee4ef}
.field{gap:9px;margin-bottom:22px;min-width:0}.field label{font-size:13px;font-weight:600;color:var(--ink)}.field input,.field textarea,.field select{font-size:14px;line-height:1.6;border:1px solid #d6ded3;background:#fffefa;min-height:47px;padding:12px 14px;border-radius:9px;transition:border-color .18s,box-shadow .18s}.field input[readonly]{background:#f2f4ec;color:#64756e}.field textarea{min-height:112px}.field small,.help-text{font-size:12px;line-height:1.7;color:var(--muted)}.field-row{gap:20px}.field-group{min-width:0}.input-prefix,.inline-input{border-radius:9px;border-color:#d6ded3;background:#f0f3e9}.input-prefix span,.inline-input>span{font-size:14px}.input-prefix input,.inline-input input{background:transparent}.field input[type=checkbox],.field input[type=radio]{min-height:0;width:auto;accent-color:var(--green)}.form-error{font-size:13px;line-height:1.7;border-radius:8px}.notice{font-size:12px;line-height:1.85;border:1px solid #e8dec6;border-radius:12px;background:#faf6e9;color:#76613d;padding:16px 18px}.notice svg{flex:none}.small-notice,.schedule-note{font-size:12px;line-height:1.85}.search-wrap input{font-size:14px;min-height:47px;border-radius:10px;background:#fffefa}.search-wrap svg{width:18px;height:18px;color:#7b8a7e}.search-wrap{min-width:0}.badge{font-size:11px;line-height:1.5;padding:5px 10px;gap:6px;background:#e8f1e7;color:#38704a;font-weight:500}.badge:before{width:5px;height:5px}.badge.gold{color:#906b30;background:#f6edda}.badge.red{color:#a7483d;background:#fae8e3}.badge.gray{color:#6f7b70;background:#edf0e8}.count-pill{font-size:12px;padding:7px 13px;border:1px solid #dce2d5;background:#fffefa;color:#667564}.pill{font-size:12px;min-height:38px;padding:9px 16px;border-radius:8px}.pill.active{color:#fffdf7;background:var(--green);border-color:var(--green)}.sort-select{font-size:12px;min-height:40px;border-radius:8px;color:var(--ink)}
.panel{border:1px solid #e0e4da;border-radius:18px;background:var(--white);box-shadow:var(--shadow-soft)}.panel h2,.panel h3{font-size:17px;font-weight:650}.panel-header{gap:18px;margin-bottom:25px}.panel-header p{font-size:12px;line-height:1.7}.table-scroll{scrollbar-width:thin;scrollbar-color:#acb7a9 transparent}.data-table{font-size:12px}.data-table th{font-size:11px;font-weight:600;letter-spacing:.025em;color:#718071;background:#f4f5ef}.data-table td{font-size:12px;line-height:1.7;color:#29443b}.data-table small{font-size:11px;line-height:1.7;color:#6d7c70}.pagination{font-size:12px}.mono{font-variant-numeric:tabular-nums;font-size:12px}.data-table .log-ip{font-size:12px}.geo-country{font-size:13px;font-weight:600}.geo-unavailable{font-size:12px}.geo-attribution,.geo-attribution p{font-size:11px;line-height:1.8}.geo-attribution{border-color:var(--line)}.geo-cell small{font-size:11px}.clear-logs-button{font-size:12px;color:var(--danger)}
dialog#modal{width:min(720px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 48px);border:1px solid #d1d8c7;border-radius:22px;background:var(--white);box-shadow:0 32px 100px #00170e3d;padding:0;color:var(--ink)}dialog#modal::backdrop{background:#071f18a8;backdrop-filter:blur(6px)}.modal-header{padding:26px 30px 22px;border-bottom:1px solid var(--line);background:linear-gradient(110deg,#f9f6ed,#fffefa);position:sticky;top:0;z-index:2;align-items:center}.modal-header h2{font:500 25px/1.5 var(--serif);letter-spacing:.04em}.modal-header .btn-icon{background:#fffefa;border-color:var(--line)}.modal-body{padding:28px 30px}.modal-footer{border-top:1px solid var(--line);padding-top:24px;gap:12px;display:flex;justify-content:flex-end;flex-wrap:wrap}.modal-footer .btn{min-width:100px}.radio-options{gap:12px;flex-wrap:wrap}.radio-option{font-size:13px;padding:14px;border-radius:10px;background:#fafaf5;border-color:#dce3d6;min-width:130px;flex:1}.radio-option:has(input:checked){border-color:#557c61;background:#eef3e9;box-shadow:0 0 0 1px #557c6120}.radio-option input{accent-color:var(--green);height:15px;width:15px}.file-drop{border:1px dashed #97ad98;background:linear-gradient(130deg,#f2f6ec,#f7f3e8);border-radius:14px;padding:30px 22px}.file-drop svg{color:#4d7656;width:34px;height:34px}.file-drop strong{font-size:15px;font-weight:600}.file-drop small{font-size:12px;line-height:1.7}.file-drop input{font-size:12px;max-width:100%}.file-drop input::file-selector-button{border:1px solid #b8c6b2;border-radius:7px;background:#fffefa;color:var(--green);padding:9px 13px;margin-right:12px;cursor:pointer}.upload-progress{font-size:12px}.progress-track{height:8px;background:#e7ecdf}.progress-fill{background:linear-gradient(90deg,#1c624c,#b39456)}.upload-progress span{font-size:12px}.toast{font-size:13px;padding:17px 22px;border-radius:12px;background:#123f35;box-shadow:0 10px 40px #102e2a24;border:1px solid #c0a76b44;color:#fffdf7;line-height:1.65}.toast.error{background:#873e33}.toast-region{max-width:min(460px,calc(100vw - 36px));z-index:100}.page-loading,.initial-loading{font-size:14px;min-height:200px}.spinner{border-top-color:var(--gold)}.empty-state{padding:55px 24px}.empty-state h3{font:500 25px/1.6 var(--serif)}.empty-state p{font-size:13px;line-height:1.85}.empty-state>svg{color:#a28c5a}.fatal-error{padding:100px 24px;max-width:700px}.fatal-error h1{font:500 34px/1.5 var(--serif)}.fatal-error p{font-size:14px;line-height:1.8}
@media(max-width:620px){body{font-size:14px}.btn{min-height:44px;font-size:13px;padding:11px 16px}.btn-small{min-height:36px;font-size:12px;padding:8px 12px}.field input,.field textarea,.field select,.search-wrap input{font-size:16px}.field small,.help-text{font-size:12px}.brand-name{font-size:18px}.panel{padding:21px;border-radius:15px}.panel-header h2{font-size:16px}.panel-header p{font-size:12px}.data-table small{font-size:11px}.log-table tbody td:before{font-size:10px}.log-table .geo-cell small,.log-table .log-agent small{font-size:11px}.geo-attribution,.geo-attribution p{font-size:11px}.modal-header{padding:21px 21px 18px}.modal-header h2{font-size:22px}.modal-body{padding:21px}.modal-footer{padding-top:20px}.modal-footer .btn{flex:1}.field-row{gap:0}.radio-option{min-width:110px;padding:12px;font-size:12px}.notice{font-size:12px}.toast{font-size:13px}.empty-state h3{font-size:23px}.empty-state p{font-size:13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
